数字文字l
和L
的后缀long int
和long double
是相同的。我不明白编译器如何知道我的数字文字是long int还是long double,如果它们共享相同的后缀。为什么这样做?
我知道我错过了一些完全明显的东西。
答案 0 :(得分:3)
文字数字需要将句点或指数视为浮点文字常量。如果它没有任何这些,则将其视为整数文字常量。
答案 1 :(得分:0)
来自C11 6.4.4.2/4:
未填充的浮点常量的类型为double。如果以字母f或F为后缀,则表示类型为float。如果以字母l或L为后缀,则其类型为long double。
浮动常量由6.4.4.2开头的语法定义。它必须包含.
,因此不存在可能不包含该值的整数常量的歧义。