4.4 這是個巧妙的表達式:  a ^= b ^= a ^= b  它不需要臨時變量就可以交換 a 和 b 的值。

這不具有可移植性。它試圖在序列點之間兩次修改變量 a, 而這是無定義的。

例如,有人報告如下代碼:

    int a = 123, b = 7654;
    a ^= b ^= a ^= b;
在 SCO 優化 C 編譯器 (icc) 下會把 b 置為 123, 把 a 置為 0。

參見問題 3.13.7 和 20.14

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)