"L"在整数字面的末尾是什么意思?

Ton*_*ion 21 c++

我有这个常数:

#define MAX_DATE  2958465L
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*lis 35

它是一个long整数字面值.

整数文字int默认具有一种类型; 所述L后缀给它的类型long (注意:如果该值不能由一个被表示int,则该文字将具有类型的long即使没有后缀).

  • @David:"如果它是十进制且没有后缀,则它具有这些类型中的第一个,其值可以表示为:`int`,`long int`(C++03§2.13.1/ 2). (8认同)
  • @ kizzx2:`42`是一个`int`.如果你想要它是一个'long`,你需要添加`L`(给'42L`).有很多原因你可能需要明确地使用`long`:你可能会选择一个特定的函数重载或确保模板用`long`而不是`int`实例化.您可以使用它来确保使用`long` precision而不是`int` precision来计算某个整数表达式.`INT_MAX + 1`将溢出.如果`long`的范围大于`int`,则`INT_MAX + 1L`不会溢出. (5认同)