C++ 什么是;L";在整型文字的末尾是什么意思?

C++ 什么是;L";在整型文字的末尾是什么意思?,c++,C++,我有一个常数: #define MAX_DATE 2958465L 在这个意义上,L是什么意思?它是一个长整数文本 默认情况下,整数文本的类型为int;L后缀赋予它一种类型的long(注意,如果值不能用int表示,那么即使没有后缀,文本也会有一种类型的long。在这种情况下L不起任何作用 一个数字后的L给出了常量的long类型,但由于在这种情况下,该常量会立即分配给int变量,因此不会发生任何更改。L告诉编译器该数字的类型为long。Long是一种大小大于或等于int的有符号类型。在大多数现

我有一个常数:

#define MAX_DATE  2958465L

在这个意义上,L是什么意思?

它是一个
整数文本


默认情况下,整数文本的类型为
int
L
后缀赋予它一种类型的
long
(注意,如果值不能用
int
表示,那么即使没有后缀,文本也会有一种类型的
long

在这种情况下
L
不起任何作用


一个数字后的
L
给出了常量的
long
类型,但由于在这种情况下,该常量会立即分配给
int
变量,因此不会发生任何更改。

L告诉编译器该数字的类型为long。Long是一种大小大于或等于int的有符号类型。在大多数现代编译器上,这意味着该数字将占用4字节的内存。这恰好与大多数编译器上的int相同,因此在这种情况下不会产生影响。

请参阅链接 它说:

文字常量(通常称为文字或常量)是不变量,其值由其表示形式暗示

基数:十进制

示例:1L

说明:
任何不以0(零)开头,后跟L或L的十进制数(数字0-9)都不是常量,而是一个宏(可扩展为文字)。那么该数字扩展为什么?确定吗?如果没有“L”后缀的文字是C++中的整数类型,如果文字不适合int类型,它将无法编译。@戴维:“如果它是十进制的,没有后缀,则它的第一种类型可以表示它的值:<代码> int ,<代码> long int (C++ 03节2.2.1/2)。。因此,似乎编译器可以自动为我们选择。我们希望自己什么时候加入
L
后缀?@kizzx2:
42
是一个
int
。如果您希望它是一个
long
,您需要添加
L
(给出
42L
)。您可能需要显式使用
long
的原因有很多:您可以这样做是为了选择特定的函数重载,或者确保模板是用
long
而不是
int
实例化的。您可以用它来确保某些整数表达式是用
long
精度而不是
int计算的ode>精度。
INT_MAX+1
将溢出。如果
long
的范围大于
INT
INT_MAX+1L
将不会溢出。您能举一个例子说明它在哪里做了什么吗?long是有符号的,在mac os上,使用gcc,long是8字节长的。