c语言中128位无符号整数的使用

问题描述

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

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

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

对于有符号的 128 位整数,只需编写 __int128,对于无符号的 128 位整数,只需编写 __int128。

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

解决方法

  1. “目标”是指您的编译器配置为为其创建程序的 CPU 架构和操作系统的特定组合。 Does a list of all known target triplets in use exist? 有讨论。但是“整数模式”其实是编译器内部使用的一个概念,只与硬件能做什么和不能做什么间接相关。所以这一切真正说的是“编译器在某些目标上支持 128 位整数,而在其他目标上不支持”。确定您的是否正确的最简单方法是尝试编译并运行一个使用 __int128 的小型测试程序。

  2. 大多数系统的 printf 函数不支持 __int128,因此您必须编写自己的代码来打印它们,或者在某处找到第三方代码。请参阅 How to print __int128 in g++?,它适用于 C++,但仍然相关。

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...