这种情况应该是在有些编译器里面的精度丢失造成的吧,事实上,如果a=任意一个整数,这段代码的结果都不会变,这个和编译器有关了,如果想显示正确的话只有显示的强制类型转化了,这些代码,我在
VC6.0
和
VS2010
中都试过,VC6.0还好点,为0.000000,VS2010中这个值就是随机的数了,显示转换:
printf("%f",(double)a);
int是整型,2个字节,float是浮点型占用4个字节,所以,如果,用浮点输出,变量i的前两个字节是0,所以,输出是0,强制转换可以改变数据的存储类型。