1 // Test assignment operations
2
testAssignment()3 void testAssignment() {
4 int a = 2;
5 a *= 5;
6 printf("2 *= 5 %d\n", a);
7 a = 20;
8 a /= 5;
9 printf("20 /= 5 %d\n", a);
10 a = 17;
11 a %= 5;
12 printf("17 %%= 5 %d\n", a);
13 a = 17;
14 a += 5;
15 printf("17 += 5 %d\n", a);
16 a = 17;
17 a-=5;
18 printf("17 -= 5 %d\n", a);
19 a = 17;
20 a<<=1;
21 printf("17<<= 1 %d\n", a);
22 a = 17;
23 a>>=1;
24 printf("17>>= 1 %d\n", a);
25 a = 17;
26 a&=1;
27 printf("17&= 1 %d\n", a);
28 a = 17;
29 a^=1;
30 printf("17^= 1 %d\n", a);
31 a = 16;
32 a^=1;
33 printf("16|= 1 %d\n", a);
34 }
35
36 int a;
37
f()38 int* f() {
39 printf("f()\n");
40 return &a;
41 }
42
testEval()43 void testEval() {
44 a = 0;
45 printf("*f() = *f() + 10;\n");
46 *f() = *f() + 10;
47 printf("a = %d\n", a);
48 }
49
testOpEval()50 void testOpEval() {
51 a = 0;
52 printf("*f() += 10;\n");
53 *f() += 10;
54 printf("a = %d\n", a);
55 }
56
main()57 int main() {
58 testAssignment();
59 testEval();
60 testOpEval();
61 return 0;
62 }
63