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 intunsigned 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 命令显示出来的结果中 : 所有者旁边的这个数值是啥意思?

Linux CentOS中,ll 命令显示的结果中,“所有者旁边”的这个数值是啥意思?

0dp 和权重是啥意思? [复制]

linux命令 $- 是啥意思

linux中的shell是啥意思?

linux的ll -s命令每列的含义是啥