数字文字 long int 和 long double 的后缀如何都为 l/L?
How can the suffix for numeric literals long int and long double both be l/L?
数字文字 long int
和 long double
的后缀 l
和 L
相同。我不明白编译器如何知道我希望我的数字文字是 long int 还是 long double 如果它们共享相同的后缀。为什么这样做有效?
我知道我在这里遗漏了一些非常明显的东西。
文字数字需要有句点或指数才能被视为浮点文字常量。如果它没有任何这些,它将被视为整数文字常量。
来自 C11 6.4.4.2/4:
An unsuffixed floating constant has type double. If suffixed by the letter f or F, it has type float. If suffixed by the letter l or L, it has type long double.
一个浮点常量由6.4.4.2开头的语法定义。它必须包含 .
,因此对于可能不包含那个的整数常量没有歧义。
数字文字 long int
和 long double
的后缀 l
和 L
相同。我不明白编译器如何知道我希望我的数字文字是 long int 还是 long double 如果它们共享相同的后缀。为什么这样做有效?
我知道我在这里遗漏了一些非常明显的东西。
文字数字需要有句点或指数才能被视为浮点文字常量。如果它没有任何这些,它将被视为整数文字常量。
来自 C11 6.4.4.2/4:
An unsuffixed floating constant has type double. If suffixed by the letter f or F, it has type float. If suffixed by the letter l or L, it has type long double.
一个浮点常量由6.4.4.2开头的语法定义。它必须包含 .
,因此对于可能不包含那个的整数常量没有歧义。