镀锌压型钢板:c语言运算符优先级问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/01 13:42:16
若有定义:int a=7; float x=2.5 , y=4.7 ;
则表达式x+a%3*(int)(x+y)%2/4的值是( )
A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000
并说出具体的计算顺序 ,谢谢
为什么最后那步2.5+1/4变成了2.5+0

答案是A;
这样的:我每一步写一个计算结果
x+1*(int)(x+y)%2/4
x+1*7%2/4
x+1*1/4
x+1/4
x+0
x
所以是A
我已经在编译器上编译过.答案肯定....

选 b
因为 a%3=1 (int)(x+y)=7
接着算 a%3*(int)(x+y)=7
接着 7%2=1
接着 1/4=0.250000
最后 2.5+0.250000=2.750000

*,/,%属于同一优先级(高于+,-),从左到右执行运算。
()改变优先级次序,县计算括号中的表达式.
所以:
x+a%3*(int)(x+y)%2/4
=x+a%3*7%2/4
=x+7%3*7%2/4
=2.5+1*7%2/4
=2.5+7%2/4
=2.5+1/4
=2.5+0
=2.5

其中(int)(x+y)先计算x+y=7.2再取整数部分7.