问题出在printf
int main()
{
int i=1;
float f=5;
printf("%d , %f ,%d\n",i,f,i);
printf("%d , %d ,%d ,%d\n",i,f,i,i);
printf("%d , %d ,%d ,%d\n",i,(int)f,i,i);
printf("%d ,%d , %d\n",i,i,f);
system("pause");
return 0;
}
显示如下:
1 ,5.000000 ,1
1 ,0 ,1075052544 ,1
1 ,5 ,1 ,1
1 ,1 ,0
为么第二行第二个i显示不正常,
float f=5;根据IEEE754,那么f的二进制表示=010000001 01000000 00000000 0000000,按照printf %d十进制显示 f 应该是1084227584,而不是1075052544