%d对应的是int型,%f对应的是float型。f=i/2.0可以改成f=(float)i/2
先明确,float在处理的时候会被转成double,也就是8字节我们来看这一句:printf("%d\n",f);这句话首先是f被保存在内存中,占8字节。然后通过%d给printf输出,但是%d是int型,也就是2字节,所以printf打印出的是f的前两个字节的int形式也就是0。