我正在嘗試用 XOR 操作交換 2 個變量。int a = 5;int b = 4;a ^= b ^= a ^= b;這段代碼適用于 Objective-C 和 C++,但不適用于 C# 和 JavaScript,我無法理解原因。
2 回答

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
與 C#/Javascript 相比,這與 C/C++ 處理操作賦值(+=、^= 和其他)運算符的方式略有不同有關。
在 Javascript 中,被分配的變量在語句完成之前不會改變值。為了簡化數學,假設我們在 Javascript 中有以下代碼:
var a = 5;
var b = 4;
a += b += a += b;
在 javascript 中,這會設置 a = 18 (a = 5 + 4 + 5 + 4) 和 b = 13 (b = 5 + 4 + 4)。這是因為在整個語句完成之前沒有變量更改值。
相反,在 C/C++ 中,當 += 的每個子表達式發生時,變量賦值就會發生??紤]相應的 C 代碼:
int a = 5;
int b = 4;
a += b += a += b;
這給出了 a = 22,其獲得方式如下: 首先計算表達式的最后一部分 a += b。這導致值為 9。然后計算 b+= 9,給出 b = 13。然后計算 a+= 13 給出 a = 22。b 的值是 13。
- 2 回答
- 0 關注
- 208 瀏覽
添加回答
舉報
0/150
提交
取消