后缀LL表示long long类型
Postfix LL for type long long
这是关于一些非常基本的东西。
当定义long long类型时,表达式类似于。
long long x=5435666LL;
我不明白为什么LL是后修复,因为即使没有后修复,编译器也可以很清楚地分配正确的内存空间(vc++中为8字节),无论如何,在没有后修复的情况下。
那么'LL'后缀的作用是什么呢?
你的代码相当于
long long x;
x = 5435666LL
如果没有LL
后缀,则5435666
为int
。在任何一种情况下,结果都是相同的,因为5435666
适合int
,除非您在16位平台上。
如果没有后缀,编译器将选择int
, long int
和long 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);
}
要演示这些文字具有不同的大小(假设int
和long 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;
}
相关文章:
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 自动类型默认为 int 而不是 long
- Visual studio 2013 和 g++ 7.1 中将 int 和 long 类型相乘时的 c++ 差异行为
- 错误:将"long int (*)[4]"分配给"long int [4][4]"时的类型不兼容
- 如果在我的机器上 sizeof(long) == sizeof(long long),为什么它们不是同一类型?
- 使用 GCC 和 C++11 实施类型 "long double"
- 我有 3 个错误:期望一个")",期望一个表达式,long 类型的参数与 U32 类型的参数不兼容
- 为什么 shared_ptr<T>::use_count() 返回 long 而不是无符号类型?
- 将大于long类型的最大值的值传递给C中的fseek
- GCC 4.1.2:错误:整型常量对于' long '类型来说太大
- 后缀LL表示long long类型
- 在Xcode中,将unsigned long类型向下转换为需要c++ int类型的方法
- 将C++long类型转换为JNIjlong
- 如何将LONG类型强制转换为CString类型
- 将long类型的number传递给函数(引用vs值)(c++)
- 从union中的long类型强制转换为char*类型,然后再返回,会做什么?
- 在搜索大质数时,整数常数对于' long '类型来说太大
- 为什么要将float类型的指针转换为long类型的指针,然后解引用呢?
- 无法打印存储在 long long 类型的变量中的一些大值