C++一道题

来源:百度知道 编辑:UC知道 时间:2024/06/18 17:09:22
一道小题……惭愧ing~
double x=2.5,y=4.7;
int a=7;
x+a%3*(int)(x+y)%2/4;

问:表达式x值为?
我知道答案是2.5,可是怎么算的呢?
只能化简到2.5+7%21%2/4
之后的优先级是怎么回事?2/4不明白了……
不要鄙视我 多谢了~~~
哦……那是我想错了呀……多谢了~~

2.5+7%3*(int)(7.2)%2/4
=2.5+1*7%2/4
=2.5+1/4
=2.5+0

因为1/4中的1和4都为整数,因此1/4的值0.25也转化为整数0

7%21%2/4 由于除和余的优先级相等 所以7%21=7 就变成 7%2/4
7%2=1 就变成 1/4 整形相除还是整形 得0

正解:
a%3 = 7%3 = 1
(int)(x+y) = (int)(2.5+4.7) = (int)(7.2) = 7
1*7%2 = 1
1/4 = 2.5

除和余的优先级相等,后面自己看拉