| // 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; |
| } |