数字文字上的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 / uLL / ll后缀的文字是一种文字types: unsigned long long int [ source ]

U / u是无符号整数的C / C ++后缀。
LL / ll是一个long long整数的C / C ++后缀,它是C ++ 11中的一个新types ,要求长度至less为64位。

笔记:

  1. 如果使用了任何修饰符,则可以省略关键字int ,例如, unsigned long long 。 所以这将定义one unsigned long long int ,任何分配给它的数字都将是static_cast unsigned long long intunsigned long long one = 1;
  2. C ++ 11标志着auto的出现。 它将variablestypes设置为在声明上分配给它的types。 例如,因为2ULL是一个unsigned long long int文字two将被定义为一个unsigned long long intauto two = 2ULL;
  3. C ++ 14引入了与顺序无关的文字后缀。 以前, U / u后缀必须在任何大小后缀之前。 但是大概C ++ 14的后缀是以任意顺序接受的,所以这个现在是一个合法的unsigned long long int literal 13LLU