如何交換2點的整數,而無需使用第三可變的,使得它適用於整數的所有範圍。 我知道我們通常會遵循以下邏輯。交換兩個整數,而無需使用第三可變所有範圍的整數的值
int a, b;
a = 10;
b = 30;
a = a + b;
b = a - b;
a = a - b;
但是,如果(a + b)給出的值大於整數範圍,則此邏輯將失敗。 還有其他邏輯嗎?
如何交換2點的整數,而無需使用第三可變的,使得它適用於整數的所有範圍。 我知道我們通常會遵循以下邏輯。交換兩個整數,而無需使用第三可變所有範圍的整數的值
int a, b;
a = 10;
b = 30;
a = a + b;
b = a - b;
a = a - b;
但是,如果(a + b)給出的值大於整數範圍,則此邏輯將失敗。 還有其他邏輯嗎?
我相信你正在尋找的XOR swap:
if (a != b) {
a ^= b;
b ^= a;
a ^= b;
}
int a=10;
int b=20;
a=a^b;
b=a^b;
a=a^b;
Console.WriteLine(a);
Console.WriteLine(b);
你可能要參考這個帖子: http://stackoverflow.com/questions/26274628/how-do-you -swap-兩整數值,而無需-使用-TEMP-可變 – Hatjhie 2014-10-10 02:03:59