一道C语言的简单的算术问题,请说明运算顺序.
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/03 15:12:25
一道C语言的简单的算术问题,请说明运算顺序.
定义 int a=7;float x=2.5;y=4.7;
请问 x+a%3*(int)(x+y)%2/4 等于多少?
定义 int a=7;float x=2.5;y=4.7;
请问 x+a%3*(int)(x+y)%2/4 等于多少?
![一道C语言的简单的算术问题,请说明运算顺序.](/uploads/image/z/16074508-4-8.jpg?t=%E4%B8%80%E9%81%93C%E8%AF%AD%E8%A8%80%E7%9A%84%E7%AE%80%E5%8D%95%E7%9A%84%E7%AE%97%E6%9C%AF%E9%97%AE%E9%A2%98%2C%E8%AF%B7%E8%AF%B4%E6%98%8E%E8%BF%90%E7%AE%97%E9%A1%BA%E5%BA%8F.)
由于 * / %以及()优先级相同,并且高于+,所以会先计算:
a%3*(int)(x+y)%2/4
由于()的优先级最高,所以先计算x+y并进行类型转换,之后上式就变成了:
a%3*7%2/4
之后由于这里的运算符优先级相同,而且结合性是从左向右的,所以从左向右依次计算,即上式等价于:
(((a%3)*7)%2)/4
把a=7代入上式,得:
(((7%3)*7)%2)/4
于是,最终结果是:
1/4=0
x+0=x=2.5
所以最后的计算结果是2.5
a%3*(int)(x+y)%2/4
由于()的优先级最高,所以先计算x+y并进行类型转换,之后上式就变成了:
a%3*7%2/4
之后由于这里的运算符优先级相同,而且结合性是从左向右的,所以从左向右依次计算,即上式等价于:
(((a%3)*7)%2)/4
把a=7代入上式,得:
(((7%3)*7)%2)/4
于是,最终结果是:
1/4=0
x+0=x=2.5
所以最后的计算结果是2.5