C语言 帮忙看看一道题!表达式问题!谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:16:26
若有定义语句int b=7;float a=2.5,c=4.7;
则表达式 a+(int)(b/3*(int)(a+c)/2)%4 的值为

答案是 5.500000
为什么??拜托给每一步的解答~~顺表详细的解释一下~~~
谢谢谢谢!!!!
这时算b/3*(int)(a+c)/2 =7.0 //结合方向从左至右,此时结果 是float型
为什么结果是float??
b/3是int
(int)(a+c)也是int
为什么最后结果会是float呢??还是不太明白哦~~谢谢再解释一下下~~一楼的大师~~

(一)先弄明白这些运算符的优先级,从高到低依次是
()
(类型强转符)
*,/,% 这三个为同级,结合方向为自左向右
+
(二)由上可以知道,
先算(a+c)=7.2
再算(int)(a+c)=7
算b/3=2 // 因为b是int型
这时算b/3*(int)(a+c)/2 =7.0 //结合方向从左至右,此时结果 是int型
这时算(int)(b/3*(int)(a+c)/2)=7 //为整型
接着算(int)(b/3*(int)(a+c)/2)%4=3 //结果依然是整型
最后算 a+(int)(b/3*(int)(a+c)/2)%4=3+2.5=5.5//结果是float型
(三)对输出结果5.500000的解释
输出时用的是%f格式,即为单精度输出,有效位数是7位,保留6位有效小数..

不好意思,刚才编辑时有点晕,出现笔误,请见谅..^_^..