什么是长双重文字的C++后缀?

Wal*_*ter 55 c c++ literals floating-point-precision

在C++(和C)中,没有后缀的浮点文字默认为double,而后缀f意味着a float.但是后缀是long double什么?

不知道,我会定义,比方说,

const long double x = 3.14159265358979323846264338328;
Run Code Online (Sandbox Code Playgroud)

但我担心的是变量x包含的有效位3.14159265358979323846264338328少于64,因为这是一个double文字.这种担心是否合理?

Vla*_*cow 62

来自C++标准

除非后缀明确指定,否则浮动文字的类型为double.后缀f和F指定float,后缀l和L指定long double.

与C标准的相应段落进行比较很有意思.在C中,使用术语 floating constant代替floating literalC++:

4未加浮动的常量类型为double.如果以字母f或F为后缀,则表示类型为float.如果以字母l或L为后缀,则其类型为long double


Jen*_*edt 18

C后缀是L.我强烈怀疑C++是一样的.

你的担心是合理的.您的文字将首先转换为a double,然后被截断,然后转换回long double.


izo*_*ica 10

您的担忧是有效的,您应该使用L后缀为double double literal.

  • `F`来自哪里?我检查了C标准,那里只有`L`. (4认同)