LL是什么意思?

What does LL mean?

本文关键字:意思 是什么 LL      更新时间:2023-10-16

LL是否在标准中的任何地方定义(难以获得)?

ideone接受代码

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

并打印

8
4

但是这是什么意思呢?

在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!");
}

LL是long-long的后缀,这是64位的大多数(所有?)C/c++实现。因此,0LL是一个值为0的64位字面值。

这类似于L作为长字面值的后缀,在大多数32位和64位C/c++实现中,其大小与非长int相同。(在16位实现中,int的大小通常为16位,因此L后缀将表示32位整数字面值,而不是默认的16位。)

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
...

我们将从一个例子开始:

std:: cout & lt; & lt;2你& lt; & lt;endl;

这个结果将是2,这是因为根据数据大小,为了正确地修复它,我们希望在某些情况下,使用2作为long,这正是所发生的。给出的输出类型为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