本人有道C语言题目搞不明白,请各位解答,在此谢谢大家!如果解答合理我一定加分,再次感谢

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:51:46
main()
{
double d;
float f;
long l;
int i;
i=f=l=d=20/3;
printf("%d%d%f%f\n",i,l,f,d);
}
求输出结果。
(如有程序错误,纯属笔误,谢谢)
再加一句:我要大家充分的理由,而不仅仅是结果,谢谢!

i=f=l=d=20/3;
相当于
d=20/3; //20整数 3整数,所以操作结果是整数6。6赋值给6经历int到double的隐式类型转换,所以是d是6.000000
l=d; //隐式转换double到long int
f=l; //隐式转换long int到float
i=f; //隐式转换float到int
所以结果是
6 6 6.000000 6.000000

6 6 0.000000 0.000000
20/3的结果不是整数,赋给整形常量i,l是会自动舍去小数,故结果为6;
诺想使f和d的值正确应使f=20.0/3,且不能与整形常量连等,以免造成数据丢失。

6 6 6.000000 6.000000
20/3整数与整数运算,结果为整数6,double和float型输出小数部分自动补0