0

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

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

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

4

2 回答 2

5

这是一个后缀类型说明符,AB可以在此处阅读有关浮点文字的更多信息。简短的回答是,L两者l都表明long double。因为maxpossible您可以在此处阅读有关整数文字L表示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

例如:

std::cout << typeid( decltype( .1l ) ).name() << std::endl ;
std::cout << typeid( decltype( 1e2L ) ).name() << std::endl ;

这给了我e两种情况,并且运行它c++filt -t给了我long double

于 2013-05-20T02:42:32.157 回答
2

因为这些是文字常量

后缀lorL使常数为longor long double

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

于 2013-05-20T02:44:01.603 回答