#include<stdio.h>
#include<conio.h>
int main()
{
float i=0.7;
clrscr();
if(i < 0.7)
printf("If Block");
else
printf("Else Block");
getch();
return 0;
}
我不明白whay输出会是“If block”.....请帮助为什么if部分被执行?
答案 0 :(得分:13)
实际上i
是0.69999999998
的浮动表示。
当你在内存中分配i=0.7
时,无法像你想象的那样在double precision
中表示0.7。
因此,float
和double
之间的比较会导致类型提升,在这种情况下,i
小于0.7
,这是双倍的。