我想使用方法strtoull(...),但每次我使用它时,我真的必须输入unsigned long long吗?

我所能找到的最大整数类型定义是uint64_t/size_t,但它与unsigned long long不同.

我相信unsigned long long会占据很大的空间.社区中有没有某种官方和公认的捷径? 我一定要做我自己的类型吗?它的名字应该是什么?u128int_t还是uLLong

推荐答案

你说你"需要一个unsigned long long int的类型",但unsigned long long int is是一个类型.

显然,你担心的是unsigned long long int这个名字太长了,不适合打字.你说得有道理,但为它定义别名可能会造成更多的混乱,而不是它的价值.每个知识渊博的C程序员都知道unsigned long long int是什么意思.没有人不查就知道你的别名是什么意思,即使这样,他们也不能确定它的含义不会随着软件的发展而改变.如果您想使用unsigned long long int,最好使用unsigned long long int(或unsigned long long).

你可以定义你自己的typedef.请记住,typedef并不定义新类型.它只为现有类型定义新名称.

<stdint.h>中定义的uint64_t可能是unsigned long long int的别名,也可能不是unsigned long long int的别名,具体取决于实现方式.unsigned long long int保证至少是64位,但也可能更宽(尽管我知道没有实现不完全是64位宽).同样,uintmax_t很可能是unsigned long long int,但这也不能保证.

如果您愿意,您可以定义一个别名,但我不推荐unless您需要某个恰好定义为unsigned long long int的类型的名称.如果您可以为您的tyecif指定一个在您的应用程序中有意义的名称,这可能是一个好主意.如果它的唯一意思是"unsigned long long的简称,我建议你不要用它.

如果您需要64位无符号整数类型,uint64_t已经存在;只需使用它即可.(如果实现没有提供具有所需特征的类型,则它不会定义uint64_t,当您try 使用它时,错误消息将告诉您这一点.)

C++相关问答推荐

为什么这个select()会阻止?

以c格式打印时间戳

堆栈帧和值指针

警告:C++中数组下标的类型为‘char’[-Wchar-subpts]

如何创建一个C程序来存储5种动物的名字,并在用户 Select 其中任何一种动物时打印内存地址?

限制不同类型的限定符

如何使用C++在控制台中以彩色打印被阻止的客户端

如何读取文件并将内容保存在字符串中?(在C语言中,没有崩溃或核心转储错误)

在编写代码时,Clion比vscode有更多的问题指示器

为什么电路板被循环删除?

C语言中奇怪的输出打印数组

从另一个宏函数调用C宏

STM32 FATFS用户手册(Um1721)中的代码正确吗?

在下面的C程序中,.Ap0是如何解释的?

哪个首选包含第三个库S头文件?#INCLUDE;文件名或#INCLUDE<;文件名&>?

将char*数组深度复制到 struct 中?

If语句默认为true

GCC认为这是一个VLA是对的吗?

全局变量 y0 与 mathlib 冲突,无法编译最小的 C 代码

int 与 size_t 与 long