如果数字文字的后缀long int和long double都是l / L?

时间:2015-05-19 14:34:05

标签: c++ syntax literals

数字文字lL的后缀long intlong double是相同的。我不明白编译器如何知道我的数字文字是long int还是long double,如果它们共享相同的后缀。为什么这样做?

我知道我错过了一些完全明显的东西。

2 个答案:

答案 0 :(得分:3)

文字数字需要将句点或指数视为浮点文字常量。如果它没有任何这些,则将其视为整数文字常量。

答案 1 :(得分:0)

来自C11 6.4.4.2/4:

  

未填充的浮点常量的类型为double。如果以字母f或F为后缀,则表示类型为float。如果以字母l或L为后缀,则其类型为long double。

浮动常量由6.4.4.2开头的语法定义。它必须包含.,因此不存在可能不包含该值的整数常量的歧义。