高尾です。

>>まつもとさん

> 評価順が異なるからではないでしょうか。Rubyではオペランドは左
> から右に評価すると定められています。一方、Cでは評価順序は実装
> 依存です。

理解しました。
括弧の中を先に計算する(日本語は不便ですね)習慣のせいで、
目で追うときもついそうしてしまいました。
以下のコードが期待通りに動く事を確認しました。ありがとうございます。

a = (b = (a = a ^ b) ^ b) ^ a

>>なかむら(う)さん

> a, b = b, a
> で十分ですよね。

ああ、盲点でした^^;。
ありがとうございます。