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