關於兩個物件的交換

2021-06-19 07:22:15 字數 739 閱讀 1630

為使問題簡單化,設定a、b為整型定義如下:

int a;

int b;

要求做到將a,b的值互換

方法1:使用中間變數temp

int temp;

temp = a ;

a = b;

b = temp;

方法2:不使用中間變數,採用異或的方法

a = a^b;

b = a^b;

a = a^b;

方法3:不使用中間變數,使用加減法
a = a + b;

b = a - b;

a = a - b;

方法4:不使用中間變數,採用乘除法
a = a * b;

b = a / b;

a = a / b;

我想出了乙個記憶方法,左邊順序aba,右邊順序ababab,異或3次^,加減法1「+」2「-」,乘除法1"*"2"/"

觀察上面的後3種方法可歸納出乙個一般的形式:

若有z = f(x,y);

則有x = g(z,y);

y = g(z,x);

那麼就可以用上述形式來互換a與b

a = f(a,b);

b = g(a,b);

a = (a,b);

關於兩個物件交換的擴充套件

前面一節,我講到了兩個物件交換的四種方法,今天,通過除錯,來比較下這四種方法的彙編 測試環境為vc6.0 方法1 temp a mov eax,dword ptr ebp 8 ptr ebp 8 為a的位址 mov ecx,dword ptr eax 在ecx中暫存a中的內容 mov dword p...

關於兩個窗體之間交換資料

學習.net不短時間了,最近做的乙個東西需要用到在幾個窗體之間進行通訊。類似於一般軟體的設定這個選項卡,開啟時候進行一些基本引數的設定,然後主程式會根據這些引數作出反映。之前我採取的方法是在主窗體類中建立乙個子窗體的例項。然後把要傳遞的子窗體引數設定為public,這樣在主窗體中就可以呼叫了。這樣做...

兩個整數交換

第乙個程式設計題是 用 c 語言寫乙個函式交換兩整數的值,不借助第三個變數。事實上這個題目一聽到就有了想法,因為以前有做過,形如 方法一 a a b b a b a a b 不過提出了最大的問題,就是兩個正數的溢位問題。這個確實是缺限,以前遇到卻沒去找它的解決方法。此時提出了強轉型別為long in...