3

我只是第一次看到这个。我正在查看的源代码是 C

 if( rate < 0.){
   ...
 }
 else{
   ...
 }

如果 会发生什么rate=0

4

3 回答 3

16

0.是类型的文字double(并且值为零)。相比之下,0是类型的文字int

于 2013-08-20T20:41:31.773 回答
6

它被解释0.为双精度 ( 0.0) 而不是整数 ( 0)。

检查链接:“工作代码”,显示各种类型的零常数的不同大小:

于 2013-08-20T20:38:57.947 回答
2

0.是一个浮动常量,因为它没有后缀,所以它是 a double,从草案 C99 标准部分6.4.4.2 浮动常量中,我们有以下语法:

浮动常数:
   十进制浮点常数
   十六进制浮点常数
十进制浮点常数:
   小数常数指数部分选择浮动后缀选择
   数字序列指数部分浮动后缀选择
[...]
小数常数:
    数字序列选择。数字序列
    数字序列。                                  < ---- 这包括 0。
[...]

然后我们在第4段中有:

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

于 2013-08-21T01:16:52.350 回答