1

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

4

2 回答 2

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;or之类的事情100.2 == 100。你不希望它用整数来完成!

于 2012-07-10T19:58:29.730 回答
5

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

否则,如果任一操作数的对应实数类型为双精度,则将另一操作数转换为对应实数类型为双精度的类型,而不改变类型域

6.5.9 将其拼写为==

如果两个操作数都具有算术类型,则执行通常的算术转换。

编辑

我引用 C11 N1570。

于 2012-07-10T19:58:04.713 回答