Question1

What does the following program print?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>

int main() {
int x = 2, y, z;

x *= (y = z = 5); printf("%d\n", x);

z = 3;
x == (y = z); printf("%d\n", x);
x = (y == z); printf("%d\n", x);
x = (y & z); printf("%d\n", x);
x = (y && z); printf("%d\n", x);
y = 4;
x = (y | z); printf("%d\n", x);
x = (y || z); printf("%d\n", x);

getchar();

return 0;
}
1
2
3
4
5
6
7
8
9
10
11
分析:
x *= (y = z = 5) => z = 5, y = 5, x = x * y = 10;

z = 3;
x == (y = z); => z = 3, y = 3, x = 10;
x = (y == z); => z = 3, y = 3, x = 1;
x = (y & z); => z = 3, y = 3, x = 3;
x = (y && z); => z = 3, y = 3, x = 1;
y = 4;
x = (y | z); => z = 3, y = 4, x = 7;
x = (y || z); => z = 3, y = 4, x = 1;