有没有更简单的方法来写unsigned long long(?) 是的,取决于目标。 第一个问题是为什么代码使用unsigned long long?
从<inttypes.h>使用uintmax_t
如果目标是使用最宽的可用整数类型,则使用uintmax_t。uintmax_t和unsigned long long类型至少是 * 64位。uintmax_t是最宽的可用指定整数类型,可能比unsigned long long更宽。
从<stdint.h>使用uint64_t
如果目标是使用64位整数类型,则使用uint64_t。它正好是64位。unsigned long long可以是64位或更宽。
使用unsigned long long
如果目标真的是unsigned long long,那么使用unsigned long long,而不是 * 速记 * 或一些typedef,如typedef unsigned long long ull;。在形成这个答案时,我没有输入unsigned long long,但是使用copy & paste. unsigned long long是清楚的。ull不是unsigned long long的通用或标准替代品,这种简写会导致不太清晰和不清晰。可移植的代码,由于名称冲突和需要找到ull typedef来辨别它是否如所希望的那样。
4条答案
按热度按时间r6l8ljro1#
有没有更简单的方法来写
unsigned long long
(?)是的,取决于目标。
第一个问题是为什么代码使用
unsigned long long
?从
<inttypes.h>
使用uintmax_t
如果目标是使用最宽的可用整数类型,则使用
uintmax_t
。uintmax_t
和unsigned long long
类型至少是 * 64位。uintmax_t
是最宽的可用指定整数类型,可能比unsigned long long
更宽。从
<stdint.h>
使用uint64_t
如果目标是使用64位整数类型,则使用
uint64_t
。它正好是64位。unsigned long long
可以是64位或更宽。使用
unsigned long long
如果目标真的是
unsigned long long
,那么使用unsigned long long
,而不是 * 速记 * 或一些typedef
,如typedef unsigned long long ull;
。在形成这个答案时,我没有输入unsigned long long
,但是使用copy & paste.unsigned long long
是清楚的。ull
不是unsigned long long
的通用或标准替代品,这种简写会导致不太清晰和不清晰。可移植的代码,由于名称冲突和需要找到ull
typedef来辨别它是否如所希望的那样。7rtdyuoh2#
我想这就是你要找的。
stdint.h
int8_t int16_t int32_t int64_t uint8_t uint16_t uint32_t uint64_t
3pvhb19x3#
没有名为
ull
的类型。当指定整数常量时,ull
可以用作后缀,例如:你可以在C标准6.4.4.1节中阅读更多关于整型常量的内容。
如果你坚持使用
ull
作为类型名,尽管我不建议使用 *,你可以使用typedef
:jpfvwuh44#
你可以使用ULL,但只要我记得,只能在赋值的右边使用
例如:unsigned long long myValue = 123456789 ULL;
但是ULL myValue = 123456789 ULL;不应该工作