1。1 基本算数操作符
请问下面程序的输出?
main()
{
int x;
x = -3 + 4 * 5 - 6;
printf("%d\n",x);
x = 3 + 4% 5 - 6;
printf("%d\n",x);
x = -3 *4 % -6 /5;
printf("%d\n",x);
x = (7 + 6) % 5 - 2;
printf("%d\n",x);
}
这个题总体说来很基础,也很简单我在这里说下答案就行了:
11; 1; 0; 1
赋值操作符
请问下面的输出是什么?
#define PRINT(x) printf("%d\n",x)
main()
{
int x = 2, y, z;
x *= 3 + 2; PRINT(x);
x *= y = z = 4; PRINT(x);
x = y == z; PRINT(x);
x == (y == z); PRINT(x);
}
在分析这个题的时候我们不需对运算符的优先级很熟悉,从运算符的优先级我们可以知道 ×= 排在倒数第二的位置上,因此是优先级相当低的运算符了。
故: (1)x *= 3 + 2 => x *= 5 => x = 10;
在分析第二小题的时候光是知道上面的还不够,因为 = 和 ×= 的优先级一样,因为我们还必须知道他们的结合方向是:从右到左;
故: (2)x *= y = z = 4 = > x *= y = 4 => x *= 4 => x = 10 * 4 = 40;
因为 == 运算符的优先级高于 =,又由于前面 y = z = 4的,所以 y == z 应当为真。
故: (3)x = y == z => x = 1;
最后一题化简为: x == 1,由于这是一个等于运算符。
故: (4)x = 1(x还是保持了它在3小题中的值,x的值并未有改变)。
阅读(726) | 评论(0) | 转发(0) |