我遇到过一些类似这样的代码:
line += addr & 0x3fULL;
显然,“U”和“L”不是十六进制数字。我猜那个十六进制数字文字末尾的“ULL”意味着"Unsigned Long Long“--我说的对吗?(这种事情很难用谷歌搜索)如果是这样,那么这是数字上的某种后缀修饰符吗?
发布于 2012-01-11 03:27:56
发布于 2012-01-11 03:27:44
是的没错。
0x
前缀使其成为十六进制的literal.ULL
后缀,使其成为unsigned long long
.类型
发布于 2016-01-22 02:20:27
我提出了一个新的答案,因为我认识到当前的答案没有引用来自跨平台的来源。 LL
**/**ll
unsigned long long int
[<unsigned long long int
][<>C24>]标准规定,具有 后缀和LL
**/**ll
后缀的文字是类型为:的文字
U
/u
是无符号整数的C/C++后缀。
LL
/ll
是long long
整数的C/C++后缀,它是一个new type in C++11,要求长度至少为64位。
备注:
int
,例如unsigned long long
。因此,这将把one
定义为一个unsigned long long int
,并且分配给它的任何数字都将是static_cast
to unsigned long long int
:auto
的出现。它将变量类型设置为声明时分配给它的类型。例如,因为2ULL
是一个unsigned long long int
文本,所以two
将被定义为一个unsigned long long int
:order引入了与订单无关的文本后缀。以前,U
/u
后缀必须位于任何大小后缀之前。但是在c++14中,后缀是以任何一种顺序接受的,所以现在因为3LLU
是一个unsigned long long int
文本,所以three
将被定义为一个unsigned long long int
:https://stackoverflow.com/questions/8809292
复制相似问题