当前位置: 首页 > 知识库问答 >
问题:

为什么没有int128_t?

卫俊力
2023-03-14

许多编译器都提供128位整数类型,但我使用过的编译器都没有提供typedefsint128_t。为什么?

据我回忆,标准

  • 用于此目的的储量int128_t
  • 鼓励提供此类类型的实现提供typedef
  • 要求此类实现提供至少128位的intmax_t

(而且,我不相信我使用了实际上符合最后一点的实现)

共有1个答案

陈正业
2023-03-14

我会参考C标准;我认为C标准继承了< code >的规则

我知道gcc在某些平台上实现了128位有符号和无符号整数,其名称__int128无符号__int128__int128是实现定义的关键字)。

即使对于提供标准128位类型的实现,该标准也不要求定义< code>int128_t或< code>uint128_t。引用C标准N1570草案的7.20.1.1部分:

这些类型是可选的。但是,如果实现提供宽度为8、16、32或64位的整数类型,没有填充位,并且(对于有符号类型)具有2的补码表示,它应定义相应的typedef名称。

gcc的__int128无符号__int128与标准定义的扩展整数类型非常相似,但是gcc并不这样对待它们。相反,它将它们视为语言扩展。

特别是,如果__int128无符号__int128是扩展整数类型,那么gcc需要将 定义为这些类型(或某些类型至少128位宽)。它没有这样做;相反, intmax_tuintmax_t仅为64位。

在我看来,这是不幸的,但我不认为这会导致gcc不合规。任何便携式程序都不能依赖__int128的存在,也不能依赖任何大于64位的整数类型。更改intmax_tuintmax_t将导致严重的ABI兼容性问题。

 类似资料:
  • 问题内容: 我正在尝试做这样的事情: 不幸的是,即使在Java 9中也不存在。 为什么它被遗漏了? 建议的解决方法是什么? 问题答案: 为什么它被遗漏了? 该API提供了可重用的构建块。这里的相关积木是,,。通过这些,您可以实现所需的功能:将流内映射到对象,然后获得平面图。提供构建基块的排列是不切实际的,并且很难扩展。 建议的解决方法是什么? 如前所述,使用可用的构建基块(+ ):

  • 我正在与Kotlin研究地图,并决定运行以下代码: 这让我: 我以为的冲突导致了一个列表。然后当我尝试这是静态编程语言的时,我也没有得到任何冲突。 问题: 我在这个简单的碰撞示例中错过了什么? 每个实现最常见的冲突行为是什么?

  • 问题内容: 我知道每次键入字符串文字时,字符串池中都会引用相同的String对象。 但是,为什么String API不包含,所以我可以使用引用? 至少,这将节省编译时间,因为编译器将知道引用现有的String,而不必检查是否已创建它以进行重用,对吗?我个人认为,字符串文字(尤其是很小的文字)在许多情况下是一种“代码异味”。 那么是否没有String.Empty背后的宏伟设计原因,还是语言创建者根本

  • 问题内容: Java的标准库似乎使用camelCase作为方法名称。诸如此类的本 机 功能也不例外。 如果是这样,为什么 不驼峰? 有什么特别的吗? 问题答案: 它已经在Java中的1.0版本发布之前-所以我的猜测是,它早于命名约定,它是在API的横扫无缘当命名约定 进行 确定。 (在其他新闻中,应称为。)

  • 问题内容: 在Java中,有和接口。两者都属于Java的标准框架,并提供了一种访问元素的分类方法。 但是,据我了解没有。你可以用来对列表进行排序。 知道为什么要这样设计吗? 问题答案: 列表迭代器首先确保你以列表的内部顺序(也称为插入顺序)获取列表的元素。更具体地说,它是按照插入元素的顺序或操作列表的方式进行的。排序可以看作是对数据结构的一种操作,有几种方法可以对列表进行排序。 我将按照自己的见解

  • 问题内容: 我正在探索,惊讶地发现那没有。 我有两个问题。 主要问题 我想知道为什么删除了? 是否存在性能问题或其他问题? 次要问题 我解决我的问题写我的: 这样可以/有更好的方法吗? 问题答案: