后缀LL表示long long类型

Postfix LL for type long long

本文关键字:long 类型 表示 LL 后缀      更新时间:2023-10-16

这是关于一些非常基本的东西。

当定义long long类型时,表达式类似于。

long long x=5435666LL;

我不明白为什么LL是后修复,因为即使没有后修复,编译器也可以很清楚地分配正确的内存空间(vc++中为8字节),无论如何,在没有后修复的情况下。

那么'LL'后缀的作用是什么呢?

你的代码相当于

long long x;
x = 5435666LL

如果没有LL后缀,则5435666int。在任何一种情况下,结果都是相同的,因为5435666适合int,除非您在16位平台上。

如果没有后缀,编译器将选择int, long intlong long int中适合的第一个值。但是,您可能特别希望适合int的值是long long int类型的。为此,您将使用LL后缀。

的例子:

template <typename T>
void foo(T x) {
  static_assert(std::is_same<T, long long>::value, "Must be long long!");
}
int main()
{
    foo(0); // Error because 0 without a suffix is an int
    foo(0LL);
}
要演示这些文字具有不同的大小(假设intlong long int在您的实现中具有不同的大小),请考虑以下示例:

#include <iostream>
int main()
{
    std::cout << sizeof(0) << ' ' << sizeof(0LL) << std::endl;
}

对我来说,这输出:

4 8

在你的例子中,它只是一个装饰的目的。

我可以想到下面的例子,它可能会有所不同,因为文字被假设为int:

enum {
    Flag1 = 1 << 0,
    Flag2 = 1 << 33,
    Flag3 = 1LL << 33;
}