为什么数字字面值的后缀long int和long double都是l/ l ?

How can the suffix for numeric literals long int and long double both be l/L?

本文关键字:long double 都是 int 数字 字面值 后缀 为什么      更新时间:2023-10-16

数字字面值long intlong double的后缀lL相同。我不明白编译器如何知道我是否希望我的数字文字是一个长int或长double,如果他们都共享相同的后缀。为什么会这样呢?

文字数字需要有一个句点或指数才能被视为浮点文字常量。

From C11 6.4.4.2/4:

无后缀的浮动常量的类型为double。如果以字母f作为后缀,则具有float类型。如果以字母l或l作为后缀,则具有long double类型。

浮动常量由6.4.4.2开头的语法定义。它必须包含.,所以不存在与整数常量的歧义。