C语言中各类数值型数据间的混合运算

如有定义:int b=7;float a=2.5,c=4.7;则下面表达式的值是多少?
a+(int)(b/3*(int)(a+c)/2)%4

刚刚接触C语言,感觉好模糊。
我的解法是 1.(int)(a+c)=7 2.b/3=2 3.(int)(a+c)/2=7/2=3

4.(int)(b/3*(int)(a+c)/2)%4=(int)(2*3)%4=2

5.a+2=2.5+2=4.5

然结果是错的 ,错在哪里我也不知道,希望知道的朋友指教一下,不甚感激。

(int)(a+c)=7 对的
b/3=2 对的
b/3*(int)(a+c)=14
b/3*(int)(a+c)/2=7 你这里犯错了,乘除是同等优先级,应该先左后右,不能先去除2

(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=5.5
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-27
a+c=2。5+2=6.5 int(a+c)=6
int(a+c)*3=18
18%4=2

b/2=3.5 int(b/2)=3

a+3=5.5
建议你有不明白的就多打几个printf输出来就清楚 了
第2个回答  2009-07-27
1 x=(int)a+c
2 y=b/3
3 z=y*x/2
4 int(z%4) PS 这步的答案本来就是int型的
5 a+第四步

答案是 5.5

搞定

你可以试试看

基本上C的优先级和四则运算是差不多的
不用思考的太复杂啦
相似回答