作者:走丢的鞋带2702934823 | 来源:互联网 | 2023-09-14 11:09
#include
int main(){
double a = 0;
int b = 0;
if (a==b)
printf("right\n");
return 0;
}
gcc编译输出的结果是 空,而VS2013输出的结果是right。
浮点数的零和整数的零应该不相等的吧
5 个解决方案
比较的时候会有隐式类型转换,理论上应该是相等的
我用gcc测试没有问题
不同的编译器有不同的实现....
不过gcc下是应该有输出的
double a=0;//由于浮点数在存储中无法精确表示,所以它的存储不是你所预期的那样
if(a == b);//实质上是if( a == (double)b),另外浮点数的存储方式和整型的是不一样的,所以99%应该是不想等的,如果相等,那么说明编译器有其它处理