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.1
、
3.7
和
20.14
。
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)