数字文字上的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 inttypes的整数常量,将后缀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。 所以这将定义oneunsigned long long int,任何分配给它的数字都将是static_castunsigned 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 intliteral13LLU。