c语言的一个算术表达式?

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:29:54
求此算术表达式的值
x+a%3*(int)(x+y)%2/4=?
设x=2.5,a=7,y=4.7

我总算不对,书上给的答案是:2.5

先乘除,后加减.括号优先.
先(int)(x+y),x+y=7.2,int(7.2)=7;
然后7%2=1;
再然后1/4=0,注意1,4都是整数,因此做整数除法,结果只保留整数商.
然后x+0=x=2.5

代入,一步步算:
x+a%3*(int)(x+y)%2/4
=2.5+7%3*(int)(2.5+4.7)%2/4
=2.5+1*(int)7.2%2/4
=2.5+1*7%2/4
=2.5+1/4
=2.5+0
=2.5

答案是2.5没错
a%3之后的结果是1
(int)(x+y)是把x+y的结果强制转换成整型,结果是7
a%3*(int)(x+y)就是7
7%2=1
因为已经变成整型了,所以1/4=0
所以整个式子的结果就是x,也就是2.5