方法一:異或交換(推薦,無溢出風險)
int x = 1, y = 2;
x = x ^ y;
y = x ^ y; // 此时 y = x
x = x ^ y; // 此时 x = y
方法二:加減法(可能溢出)
x = x + y;
y = x - y;
x = x - y;
方法三:乘除法(不可為 0,溢出風險大)
x = x * y;
y = x / y;
x = x / y;
注意
- **異或法**僅適用於**整數類型**,且兩變量**不能指向同一內存地址**(`swap(x, x)` 會歸零)。
- 現代編譯器優化下,`std::swap`/`std::exchange` 通常生成 `xchg` 指令,**比手寫技巧更快、更安全**。
- 面試可展示理解,**生產代碼請用標準庫**。