LL 是啥意思?
Posted
技术标签:
【中文标题】LL 是啥意思?【英文标题】:What does LL mean?LL 是什么意思? 【发布时间】:2013-03-12 14:06:23 【问题描述】:LL
是否在标准中的任何地方定义(很难找到)?
ideone接受验证码
int main()
std::cout << sizeof(0LL) << std::endl;
std::cout << sizeof(0);
和打印
8
4
但这是什么意思?
【问题讨论】:
【参考方案1】:在 C++11 标准第 2.14.2 段中规定:
2.14.2 整数字面量
[...]
long-long-suffix:其中之一
ll LL
第 2.14.2/2 段,特别是表 6,继续指定十进制、八进制和十六进制常量的后缀的含义,以及它们的类型。
由于0
是八进制文字,所以0LL
的类型是long long int
:
#include <type_traits>
int main()
// Won't fire
static_assert(std::is_same<decltype(0LL), long long int>::value, "Ouch!");
【讨论】:
【参考方案2】:LL
是 long-long 的后缀,在大多数(全部?)C/C++ 实现中是 64 位的。所以0LL
是一个 64 位的字面量,值为 0。
这类似于 L
作为长文字的后缀,在大多数 32 位和 64 位 C/C++ 实现中,它与非长文字 int
的大小相同。 (在 16 位实现中,int
的大小通常为 16 位,因此 L
后缀表示 32 位整数文字,而不是默认的 16 位。)
【讨论】:
【参考方案3】:0LL
是一个整数文字。它的后缀是LL
,它决定了它可能具有的可能类型集。对于十进制常量,类型为long long int
。对于八进制或十六进制常量,如有必要,类型将为long long int
或unsigned long long int
。对于0LL
,字面量的类型为long long int
。
整数文字的类型是表 6 中可以表示其值的相应列表中的第一个。
表 6 - 整数常量的类型
Suffix Decimal constants Octal or hexadecimal constant ... ll or LL long long int long long int unsigned long long int ...
【讨论】:
什么时候八进制和十六进制文字“如有必要”变成无符号的,除非使用此处未提及的另一个后缀? @unwind 当值不适合long long int
但适合unsigned long long int
时。仅当它不适合 long long int
时才考虑。
@unwind 当它们不适合签名类型时。比如说,整数是 16 位的。 0x7fff 适合 int。 0x8000 不适合 int,但适合 unsigned int。【参考方案4】:
我们将从一个例子开始:
std::cout
这个结果将是 2,并且会发生这种情况,因为根据数据大小,为了正确修复它,我们希望在某些情况下使用 2 一样长,而这正是发生的情况。给出的输出是 long long 类型,表示常量 int 2。
另一个后缀是(来自极客):
unsigned int:整数常量末尾的字符 u 或 U。
long int:整数常量末尾的字符 l 或 L。
unsigned long int:整数常量末尾的字符ul或UL。
long long int:整型常量末尾的字符ll或LL。 unsigned long long int:整数常量末尾的字符ull或ULL。
【讨论】:
以上是关于LL 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
Linux CentOS中,ll 命令显示出来的结果中 : 所有者旁边的这个数值是啥意思?