c语言这串代码为什么会输出ok
#include
int main()
{
int a,b,c;
a=110;
b=100;
while(a<b*1.1)
{
printf("ok");
break;
}
return 0;
}
110<100*1.1应该是错位的啊应该不会进入循环,应该输出为空啊
c语言这串代码为什么会输出ok
#include
int main()
{
int a,b,c;
a=110;
b=100;
while(a<b*1.1)
{
printf("ok");
break;
}
return 0;
}
110<100*1.1应该是错位的啊应该不会进入循环,应该输出为空啊
是这样的,b是整型,1.1是浮点型,而100乘1.1是浮点数之间的运算,100和1.1要转换成二进制编码并相乘,这种转换会产生误差,因此浮点内数之间的比较一般很难取到等号;
以上100乘1.1的结果可能是110.00...01,所以可能会出现110.00...01>110,结果为真进入循环,你也可以设置断点来看此时b乘1.1的值。