在某些变量初始化中,“l”是什么意思 - C ++

时间:2013-05-20 02:40:03

标签: c++ variables initialization declaration long-integer

在某些变量初始化中“l”的含义是什么?例如:

#define maxpossible     (1000000000L)
double A = 1L;
double B = 999999999l;

“L”和“l”之间有区别吗?

2 个答案:

答案 0 :(得分:5)

这是一个后缀类型说明符,对于AB,您可以阅读有关floating point literals here的更多信息。简短的回答是Ll都表示long double。对于maxpossible,您可以阅读integer literal hereL表示long

修改

正如Mike Seymour所指出的那样,所有的文字都是integer文字。这只是表明你不理智的时候检查你的答案,你会说错了。一个简单的健全检查将如下:

#include <iostream>
#include <typeinfo>

int main()
{
    std::cout << typeid( decltype( 1L ) ).name() << std::endl ;
    std::cout << typeid( decltype( 999999999l ) ).name() << std::endl ;
    std::cout << typeid( decltype( 1000000000L ) ).name() << std::endl ;
}

为每个人提供l并通过c++filt -t运行long给我4e2。什么会使文字浮点文字? a:

  • 包含小数点的数字
  • 使用指数表示法的数字,例如std::cout << typeid( decltype( .1l ) ).name() << std::endl ; std::cout << typeid( decltype( 1e2L ) ).name() << std::endl ;

例如:

e

对于这两种情况,我通过c++filt -t运行long double给了我{{1}}。

答案 1 :(得分:2)

因为这些是literal constants

后缀lL使常量为longlong double

在您的示例中,maxpossiblelong integerAB都是长双打。但是,由于您将它们声明为double,因此它们存储为doubles