书上是对的,把这一行
printf("result is :%d\n%d\n",i,j);
改为
printf("result is :%d\n%f\n",i,j);
就会输出正确的结果了
c语言支持这种语法,33.3f先赋给i,由于i为int,则会取整为33。再把i的值复制给j,所以j为33.0,其实就是33
输出一个float,要用%f,而不是%f
您的解释是正和我想问的很合适。原因是我自己在测试书上内容时没有注意灵活应用。以后会多多注意,谢谢。
输出的结果是33和0
应该是不可能的。
书上是没有错误的,是我测试的程序输出格式串存在问题,抱歉,麻烦您哦。
输出的结果应该是书中说的,i=33,j=33.0,而不应该是你说的33和0。
这个赋值操作是先把33.3f赋值给i,由于i是整数,自动转换,变成了33
再把i的值给j,此时j是33.0
如果等价于:
i=33.3f;
j=i;
换成
i=j=33.3f
则:i:33,j:33.3f
等价于:
j=33.3f;
i=j;
是我自己在测试时把输出的格式串弄错了,谢谢您回答。