在某些变量初始化中“l”的含义是什么?例如:
#define maxpossible (1000000000L)
double A = 1L;
double B = 999999999l;
“L”和“l”之间有区别吗?
答案 0 :(得分:5)
这是一个后缀类型说明符,对于A
和B
,您可以阅读有关floating point literals here的更多信息。简短的回答是L
和l
都表示long double
。对于maxpossible
,您可以阅读integer literal here和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
。什么会使文字浮点文字? 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。
后缀l
或L
使常量为long
或long double
。
在您的示例中,maxpossible
是long integer
。 A
和B
都是长双打。但是,由于您将它们声明为double
,因此它们存储为doubles
。