0

我需要在我的代码中使用 128 位 unsigned int 变量。
在网上搜索我读到了unsigned __int128。我在这里阅读https://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html

类型 __int128 支持具有足够宽以容纳 128 位的整数模式的目标

我的第一个问题是 target 是什么意思?我必须检查我的电脑是否可以表达这种类型?
第二个问题是如何打印这种变量?
最后我需要做些什么来使用这种变量吗?上面相同的链接说

只需将 __int128 用于有符号 128 位整数,或将无符号 __int128 用于无符号 128 位整数。

所以看起来我不需要#include任何东西,甚至在编译过程中我什至没有添加一些选项,gcc对吗?

4

1 回答 1

2
  1. “目标”是指您的编译器配置为为其创建程序的 CPU 体系结构和操作系统的特定组合。在是否存在所有已知目标三元组的列表?. 但是“整数模式”实际上是编译器内部使用的一个概念,只是间接地与硬件能做什么和不能做什么有关。所以这一切真正说明的是“编译器在某些目标上支持 128 位整数,而在其他目标上不支持”。找出你的是否这样做的最简单方法是尝试编译并运行一个使用__int128.

  2. 大多数系统的printf功能不支持__int128,所以你必须编写自己的代码来打印它们,或者在某个地方找到第三方代码。请参阅如何在 g++ 中打印 __int128?这适用于 C++,但仍然相关。

  3. 您不需要包含任何内容或使用任何特殊选项。

于 2021-02-11T19:29:23.147 回答