為使問題簡單化,設定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...