两道简单的C语言 赋值计算题

来源:百度知道 编辑:UC知道 时间:2024/05/25 10:48:43
1)求表达式的值
x+a%3*(int)(x+y)%2/4
设x=2.5,a=7,y=4.7
请说一下运算步骤
2)设原来a=12,求a
a/=a+a
“a%3*7%2/4,从左往右计算,得0.”
这步为什么呢?
a%3.....1
1*7.....7
7%2.....1
1/4.....0.75
哪错了?
能说的详细些吗?

还有
“再算a/=24,即a=a/24”
那样不是0.5吗?

第一题
先算(int)(x+y),强制类型转换,结果为7,再算a%3*7%2/4,从左往右计算,得0.最后x+0得2.5.记住,因为你7是整型,即int,所以7%2得1也是整型.1/4结果为整型,所以是0.

第二题
先算a+a,右边得24.再算a/=24,即a=a/24,得0.
a如果你开始定义的是int,即整型,就是0.如果定义成float,即浮点型,答案就是0.5

#include <stdio.h>
main()
{
float x=2.5,y=4.7,c;
int a=7;
c=x+a%3*(int)(x+y)%2/4;
printf("%f",c);

}

整数做整除,7/4 = 1 (余数3 就是7%4)
浮点数相除,7.0/4 =1.75

前面应该还有定义吧,如果:
int a;
float x,y;
那么:
a%3*(int)(x+y)%2/4
a%3.....1
1*7.....7
7%2.....1
1/4.....0.75 (整除应该是0)

a/=a+a;同样因为是整除,结果为0