我只是第一次看到这个。我正在查看的源代码是 C
if( rate < 0.){
...
}
else{
...
}
如果 会发生什么rate=0
?
0.
是类型的文字double
(并且值为零)。相比之下,0
是类型的文字int
。
它被解释0.
为双精度 ( 0.0
) 而不是整数 ( 0
)。
检查链接:“工作代码”,显示各种类型的零常数的不同大小:
0.
是一个浮动常量,因为它没有后缀,所以它是 a double
,从草案 C99 标准部分6.4.4.2
浮动常量中,我们有以下语法:
浮动常数: 十进制浮点常数 十六进制浮点常数 十进制浮点常数: 小数常数指数部分选择浮动后缀选择 数字序列指数部分浮动后缀选择 [...] 小数常数: 数字序列选择。数字序列 数字序列。 < ---- 这包括 0。 [...]
然后我们在第4段中有:
无后缀的浮点常量具有 double 类型。如果以字母 f 或 F 为后缀,则为 float 类型。如果以字母 l 或 L 为后缀,则它的类型为 long double。