某些变量初始化中"l"的含义是什么 - C++

What is the meaning of "l" in some variables initialization - C++

本文关键字:是什么 C++ 变量 初始化      更新时间:2023-10-16

在一些变量初始化中"l"的含义是什么?例如:

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

"L"answers"L"有区别吗?

这是一个后缀类型说明符,对于AB,您可以在这里阅读更多关于浮点字面值的信息。简而言之,Ll都表示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

因为这些都是文字常量。

后缀lL使常数为longlong double

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