C语言中,z=x+a%3*(int)(x+y)%2/4;的运算顺序是什么?谢...
解题步骤:
1、(int)(2.5+4.7)=(int)(7.2)=7,式子变 x + a%3 *7 %2/4;
2、a%3=1,式子变 x + 1 *7 %2/4;
3、1*7=7,式子变 x + 7 %2/4;
4、7 %2=1,式子变 x+1/4;
5、1/4 整数除整数的除法先做,商得 0,式子变 x + 0;
6、x+0=2.5 + 0=2.5,答案2.5。
字符解释:
(int)(x+y) -- 括号里的先做
2/4 -- 整数2除以整数4,得整数0,但这里前面还有运算符%,所以你不能先做2除以4的整数除法。
% 是整数与整数的除法求余数运算,得余数,(略去商)。
2.0/4.0 -- 浮点数除以浮点数,得浮点数的商 0.5。
扩展资料:
C语言算术编程示例:
#include <stdio.h>
int main()
{
int a = 21;
int b = 10;
int c ;
c = a + b;
printf("Line 1 - c 的值是 %d\n", c );
c = a - b;
printf("Line 2 - c 的值是 %d\n", c );
c = a * b;
printf("Line 3 - c 的值是 %d\n", c );
c = a / b;
printf("Line 4 - c 的值是 %d\n", c );
c = a % b; printf("Line 5 - c 的值是 %d\n", c );
c = a++; // 赋值后再加 1 ,c 为 21,a 为 22
printf("Line 6 - c 的值是 %d\n", c );
c = a--; // 赋值后再减 1 ,c 为 22 ,a 为 21
printf("Line 7 - c 的值是 %d\n", c );
}
2011-03-07
1. x+y
2. (int)(x+y)
3. a%3
4. a%3*(int)(x+y)
5. a%3*(int)(x+y)%2
6. a%3*(int)(x+y)%2/4
7. x + a%3*(int)(x+y)%2/4
如果是你自己写程序,强烈建议不要写这种“令人困惑的C”,如果是考试,就另当别论了。
参考资料:
8
(2)计算a%3和(int)(x+y)相乘
(3)上述乘数%2,再/4
(5)x加上上述得数,赋值给z