LL 是什么意思?

What does LL mean?

提问人:Luchian Grigore 提问时间:3/23/2013 最后编辑:phuclvLuchian Grigore 更新时间:7/31/2021 访问量:37502

问:

在标准中的任何地方都定义了(很难找到术语)?LL

IDEONE 接受代码

int main()
{
    std::cout << sizeof(0LL) << std::endl;
    std::cout << sizeof(0);
}

和印刷品

8
4

但这意味着什么呢?

C++ 文本 后缀

评论


答:

4赞 cdhowie 3/23/2013 #1

LL是 long-long 的后缀,在大多数(所有?C/C++ 实现。值为 0 的 64 位文本也是如此。0LL

这类似于长文本的后缀,在大多数 32 位和 64 位 C/C++ 实现上,其大小与非长文本相同。(在 16 位实现中,大小通常为 16 位,因此后缀将指示 32 位整数文本,而默认值为 16 位。LintintL

11赞 Andy Prowl 3/23/2013 #2

它在 C++11 标准的第 2.14.2 段中指定:

2.14.2 整数文字

[...]

long-long-suffix:其中之一

ll LL

第2.14.2/2段,特别是表6,继续具体说明十进制、八进制和十六进制常数后缀的含义及其类型。

由于是八进制文字,因此 的类型为:00LLlong long int

#include <type_traits>

int main()
{
    // Won't fire
    static_assert(std::is_same<decltype(0LL), long long int>::value, "Ouch!");
}
4赞 Joseph Mansfield 3/23/2013 #3

0LL是一个整数文本。它的后缀决定了它可能具有的类型集。对于十进制常量,类型为 .对于八进制或十六进制常量,如有必要,类型将为 OR。在 的情况下,文本的类型为 。LLlong long intlong long intunsigned long long int0LLlong long int

整数文本的类型是表 6 中相应列表中的第一个类型,可以在其中表示其值。

表 6 - 整数常量的类型

Suffix     Decimal constants    Octal or hexadecimal constant
...
ll or LL   long long int        long long int
                                unsigned long long int
...

评论

0赞 unwind 3/23/2013
八进制和十六进制文字何时“如有必要”变为无符号,除非使用此处未提及的其他后缀?
0赞 Joseph Mansfield 3/23/2013
@unwind 当值不适合 a 但适合 .只有当它不适合 .long long intunsigned long long intlong long int
0赞 Alexey Frunze 3/23/2013
@unwind 当它们不适合有符号类型时。比如说,ints 是 16 位的。0x7fff 适合 int。 0x8000不适合 int,但适合 unsigned int。
0赞 João Víctor Melo 7/30/2021 #4

我们将从一个例子开始:

std::cout << 2LL << endl;

这个结果将是 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 或 UL。