C语言 就下面算术表达式的值

1.
x+a%3*(int)(x+y)%2/4
其中x=2.5,a=7,y=4.7

2.
(float)(a+b)/2+(int)x%(int)y
其中a=2,b=3,x=3.5,y=2.5
大侠们,请把详细过程写下来!
我是菜鸟
请大侠们注意一下, 第一题标准答案:2.5,第二题标准答案:3.5.
但是我不知道过程是怎么来的?

1、注意运算符的优先级。括号的优先级最高,%,*,/的优先级相同。(int)是强制类型转换,把int后面的数转换成int型,float同理。
所以计算是:2.5+2%3*(int)(3.5+2.5)%2/4=2.5+2*0/4=2.5
这里2.5+3.5=6.0,6.0被强制转换成int型,变成整数6。
2.先进行强制转换再计算值。
(float)(2+3)/2+3%2=2.5+1=3.5
这里(2+3)被转换成float型,所以(2+3)/2=2.5。
ps:现在c++里强制转换不用这样的形式了,用static_cast<int>(x)这样的形式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-27
1、x + a%3 *(int)(x+y)%2/4
= 2.5+ 1 * 7 %2 %4
= 2.5+ 7%2%4
= 2.5+ 1%4 =2.5+1=3.5

2、(float)(a+b)/2 +(int)x%(int)y
= 5.0/2 + 3 % 2
= 2.5 + 1 =3.5

写个程序,在TC运行输出就是两个3.5啊!