C编译器(gcc)在100.0 == 100中将int转换为float或float转换为int?

时间:2012-07-10 19:55:13

标签: c

我无法弄清楚它走哪条路。似乎将它转换为int会更有意义,因为整个浮点问题,但就像我说的,我不确定。有谁知道吗?

2 个答案:

答案 0 :(得分:6)

试试这段代码:

#include <stdio.h>

int main(void)
{
    if (100.1 == 100)
        printf("Must be integer compare\n");
    else
        printf("Must be floating point compare\n");
    return 0;
}

另外,请考虑int i = 10; float j = 100.5 + i;100.2 == 100等内容。你不希望它用整数完成!

答案 1 :(得分:5)

在“通常的算术转换”下的6.3.1.8中列出。

  

否则,如果任一操作数的相应实数类型为double,   转换另一个操作数,不更改类型域,   到相应实数类型为double的类型

6.5.9为==拼写:

  

如果两个操作数都有算术类型,那么通常   进行算术转换。

修改

我引用C11 N1570。