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