我想使用方法strtoull(...)
,但每次我使用它时,我真的必须输入unsigned long long
吗?
我所能找到的最大整数类型定义是uint64_t
/size_t
,但它与unsigned long long
不同.
我相信unsigned long long
会占据很大的空间.社区中有没有某种官方和公认的捷径?
我一定要做我自己的类型吗?它的名字应该是什么?u128int_t
还是uLLong
?
我想使用方法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 使用它时,错误消息将告诉您这一点.)