数字文字上的ULL后缀
我已经运行了这样的代码:
line += addr & 0x3fULL;
显然,'U'和'L'不是hex数字。 我猜测,在这个hex数字字面意思是“无符号长隆”的末尾的'ULL' – 我正确吗? (这种事情是很难谷歌),如果是这样的话,这是一些后缀修饰符的数字?
从gcc
手册 :
ISO C99支持至less64位宽的整型数据types,并且作为扩展GCC在C90模式和C ++中支持它们。 简单地写一个
long long int
为一个有符号整数,或unsigned long long int
作为一个无符号整数。 为了创buildlong long int
types的整数常量,将后缀LL
添加到整数中。 要创build一个types为unsigned long long int
的整数常量,请将后缀ULL
添加到整数中。
是的,这是正确的。
-
0x
使其成为hex文字。 -
ULL
使它typesunsigned long long
。
我正在提出一个新的答案,因为我认识到目前的答案并没有从跨平台的来源引用。 C ++ 11标准规定,具有U
/ u
和LL
/ ll
后缀的文字是一种文字types: unsigned long long int
[ source ]
U
/ u
是无符号整数的C / C ++后缀。
LL
/ ll
是一个long long
整数的C / C ++后缀,它是C ++ 11中的一个新types ,要求长度至less为64位。
笔记:
- 如果使用了任何修饰符,则可以省略关键字
int
,例如,unsigned long long
。 所以这将定义one
unsigned long long int
,任何分配给它的数字都将是static_cast
unsigned long long int
:unsigned long long one = 1;
- C ++ 11标志着
auto
的出现。 它将variablestypes设置为在声明上分配给它的types。 例如,因为2ULL
是一个unsigned long long int
文字two
将被定义为一个unsigned long long int
:auto two = 2ULL;
- C ++ 14引入了与顺序无关的文字后缀。 以前,
U
/u
后缀必须在任何大小后缀之前。 但是大概C ++ 14的后缀是以任意顺序接受的,所以这个现在是一个合法的unsigned long long int
literal13LLU
。