我有这个常量:
#define MAX_DATE 2958465L
在这种情况下,L代表什么意思?
我有这个常量:
#define MAX_DATE 2958465L
在这种情况下,L代表什么意思?
这是一个long
整数字面量。
整数字面量默认类型为int
;添加后缀L
可以将其类型更改为long
(注意,如果值无法用int
表示,则即使没有后缀,字面量的类型也将为long
)。
int
、long int
(参考 C++03 §2.13.1/2)。 - James McNellis42
是一个整数(int
)。如果您想让它成为一个长整数(long
),需要添加L
(得到42L
)。明确使用long
有许多原因:您可能会使用它来选择特定函数重载,或确保模板使用long
而不是int
进行实例化。您可能会使用它来确保某些整数表达式使用long
精度而不是int
精度进行评估。INT_MAX+1
将发生溢出。如果long
的范围比int
大,则INT_MAX+1L
不会发生溢出。 - James McNellisL
没有作用。L
会将常量转换为long
类型,但由于在此情况下该常量立即被赋值给一个int
变量,因此不会发生任何更改。L 告诉编译器这个数是 Long 类型的。Long 是一种有符号类型,大小大于或等于 int。在大多数现代编译器上,这意味着该数字将占用 4 个字节的内存。这恰好与大多数编译器上的 int 相同,因此在这种情况下不会产生影响。