显然,“ U”和“ L”不是十六进制数字。我猜测十六进制数字文字末尾的“ ULL”表示“ Unsigned Long Long”-我正确吗?(这种事情很难用谷歌搜索)如果是的话,那么这是数字上的某种后缀修饰符吗?
精慕HU
浏览 1518回答 3
3回答
jeck猫
从gcc 手册:ISO C99支持至少64位宽的整数的数据类型,作为扩展,GCC在C90模式和C ++中支持它们。只需写long long int一个有符号整数或unsigned long long int一个无符号整数。要使type为整数常量long long int,请将后缀添加LL到整数。要使type为整数常量unsigned long long int,请将后缀添加ULL到整数。
我提出了一个新的答案,因为我认识到当前的答案并非来自跨平台来源。在C ++ 11条标准规定文字与U/ u和LL/ ll后缀是一种类型的文字:unsigned long long int [ 源 ]U/ u是无符号整数的C / C ++后缀。LL/ ll是long long整数的C / C ++后缀,它是C ++ 11中的新类型,并且要求长度至少为64位。笔记:例如int,如果使用任何修饰符,则可以省略关键字unsigned long long。因此,这将定义one为unsigned long long int,并分配给它的任何数量将static_cast到unsigned long long int:unsigned long long one = 1c ++ 11标志着的到来auto。它将变量类型设置为声明时分配给它的类型。例如,因为2ULL是unsigned long long int文字two将被定义为unsigned long long int:auto two = 2ULLc ++ 14引入了与顺序无关的文字后缀。以前,U/ u后缀必须在任何大小的后缀之前。但是大约在c ++ 14之后,后缀以任何一种顺序被接受,所以现在既然3LLU是unsigned long long int文字three将被定义为unsigned long long int:auto three = 3LLU