C语言 无符号long long类型有简写吗?

hfwmuf9z  于 2023-04-11  发布在  其他
关注(0)|答案(4)|浏览(219)

类型:

unsigned long long my_num;

似乎很麻烦。我似乎记得看到过一种简写,类似于:

ull my_num;

是我疯了,还是有更简单的方法来写unsigned long long

r6l8ljro

r6l8ljro1#

有没有更简单的方法来写unsigned long long(?)
是的,取决于目标。
第一个问题是为什么代码使用unsigned long long

<inttypes.h>使用uintmax_t

如果目标是使用最宽的可用整数类型,则使用uintmax_tuintmax_tunsigned 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来辨别它是否如所希望的那样。

7rtdyuoh

7rtdyuoh2#

我想这就是你要找的。
stdint.h
int8_t int16_t int32_t int64_t uint8_t uint16_t uint32_t uint64_t

3pvhb19x

3pvhb19x3#

没有名为ull的类型。当指定整数常量时,ull可以用作后缀,例如:

unsigned long long my_num = 1ull;

你可以在C标准6.4.4.1节中阅读更多关于整型常量的内容。
如果你坚持使用ull作为类型名,尽管我不建议使用 *,你可以使用typedef

#include <stdio.h>
 
typedef unsigned long long ull;
int main() {
    ull a = 20ull;
    printf("%llu\n", a);
}
  • 正如其他人指出的那样,使用这种简写没有明显的优势,至少它会使代码可读性降低。
jpfvwuh4

jpfvwuh44#

你可以使用ULL,但只要我记得,只能在赋值的右边使用
例如:unsigned long long myValue = 123456789 ULL;
但是ULL myValue = 123456789 ULL;不应该工作

相关问题