混血豺王百度阅读:会混合运算的C高手进!!!!!!!!!!急急急急急

来源:百度文库 编辑:高考问答 时间:2024/03/29 21:13:42
x+a%3*(int)(x+y)%2/4
设x=2.5 a=7 y=4.7
结果为2.5
(float)(a+b)/2+(int)x%(int)y
设a=2,b=3,x=3.5,y=2.5
结果为3.5
这是怎么理解的,怎么算也不等于这?
谢谢各位

(int)(x+y)=7
再模2等于1,再除以4得0.25,但是因为前面得到的1是int,所以这个0.25也被强制转换诚int,得到0。
所以整个表达式就是x+a%3*0
也就是2.5了

(float)(a+b)/2,结果是2.5,
(int)x=3,(int)y=2,两个一模等于1
加起来正好3.5

注意强制转换后的运算,注意运算优先级

整形变量运算结果去掉小数部分:如5/2=2
1.
x+a%3*(int)(x+y)%2/4=2.5+7%3*(int)(7.2)%2/4=2.5+1*7%2/4=2.5+1/4=2.5+0=2.5

2.
(float)(a+b)/2+(int)x%(int)y=5/2+3%2=2.5+1=3.5
运算具体要看变量的类型是float还是int