| // Test assignment operations | |
| void testAssignment() { | |
| int a = 2; | |
| a *= 5; | |
| printf("2 *= 5 %d\n", a); | |
| a = 20; | |
| a /= 5; | |
| printf("20 /= 5 %d\n", a); | |
| a = 17; | |
| a %= 5; | |
| printf("17 %%= 5 %d\n", a); | |
| a = 17; | |
| a += 5; | |
| printf("17 += 5 %d\n", a); | |
| a = 17; | |
| a-=5; | |
| printf("17 -= 5 %d\n", a); | |
| a = 17; | |
| a<<=1; | |
| printf("17<<= 1 %d\n", a); | |
| a = 17; | |
| a>>=1; | |
| printf("17>>= 1 %d\n", a); | |
| a = 17; | |
| a&=1; | |
| printf("17&= 1 %d\n", a); | |
| a = 17; | |
| a^=1; | |
| printf("17^= 1 %d\n", a); | |
| a = 16; | |
| a^=1; | |
| printf("16|= 1 %d\n", a); | |
| } | |
| int a; | |
| int* f() { | |
| printf("f()\n"); | |
| return &a; | |
| } | |
| void testEval() { | |
| a = 0; | |
| printf("*f() = *f() + 10;\n"); | |
| *f() = *f() + 10; | |
| printf("a = %d\n", a); | |
| } | |
| void testOpEval() { | |
| a = 0; | |
| printf("*f() += 10;\n"); | |
| *f() += 10; | |
| printf("a = %d\n", a); | |
| } | |
| int main() { | |
| testAssignment(); | |
| testEval(); | |
| testOpEval(); | |
| return 0; | |
| } |