作业帮 > 综合 > 作业

C语言难解,谁能帮我解释

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/27 19:15:30
C语言难解,谁能帮我解释
求下面算数表达式的值,
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
它为什么会得到这个值.
x+a%3*(int)(x+y)%2/4 .代入各值
=2.5+7%3*(int)(2.5+4.7)%2/4 .以下按优先级分步计算
=2.5+7%3*(int)(7.2)%2/4
=2.5+7%3*7%2/4
=2.5+1*7%2/4
=2.5+7%2/4
=2.5+1/4 ...注意这里,由于前次7%2是整除取余,余数1被作为整型量了,所以1/4结果也作为整数返回0
=2.5+0
=2.5
(float)(a+b)/2+(int)x%(int)y ..代入
=(float)(2+3)/2+(int)3.5%(int)2.5 ..按优先级运算,括号优先级最高,其次是强制类型转换
=(float)5/2+3%2 .这里因为5被(float)强制为浮点数,所以下面写成5.0
=5.0/2+1
=2.5+1
=3.5