#include <stdio.h>
int main(void) {
int a, b, c, d, e;
a = b = c = d = e = 3;
a += b -= c *= d = e += 2;
printf("%d %d %d %d %d ", a, b, c, d, e);
a += (b += c) + (e -= 2) - 1;
printf("%d %d %d %d %d ", a, b, c, d, e);
return 0;
}
列印的結果如下:
-9 -12 15 5 5
-4 3 15 5 3
- 初始化所有變量 a, b, c, d, e 為 3。
- 接著是複合賦值表達式 a += b -= c *= d = e += 2,在這個表達式中,先從右向左計算,e 變成了 5,然後 d 變成了 5,接著 c 變成了 5 * 5 = 15,然後 b 變成了 3 - 25 = -12,最後 a 變成了 3 + (-22) = -9。
- 印出 a, b, c, d, e 的值。
- 接著是另一個複合賦值表達式 a += (b += c) + (e -= 2) – 1,在這個表達式中,先計算括號內的 b += c 和 e -= 2,此時 b 變成了 -12 + 15 = 3,e 變成了 5 - 2 = 3,然後計算 a += 3 + 3 - 1 = -4。
- 再次印出 a, b, c, d, e 的值。