不建立臨時變數,交換兩個數的值

2021-09-29 13:53:04 字數 590 閱讀 9954

交換兩個數的值是一道很基本的題,通常我們都會建立乙個臨時變數來進行兩個數值的交換。

但是現在,我們不建立臨時變數去將兩個數的值進行交換。

這裡我們要用到二進位制相關知識

&(按位與)

|(按位或)

^(按位異或)

~(取反)

<<(左移)

>>(右移)

以上是二進位制裡面的一些操作,不過我們重點來說^在這裡的作用

^ 按位異或:兩數對應的二進位制數字相異或,兩數字不同結果位為1,否則為0。

利用這個操作,就可以實現本題要求。

**如下

#include int main(void)
中間交換過程可以看到總共出現三個式子,只要記住左值首尾相同即可。如下所示

a= a ^ b;

b = a ^ b;

a= a ^ b;

不建立臨時變數,交換兩個數的內容

不建立臨時變數,交換兩個數的內容 方法一 加減法 define crt secure no warnings include int main 程式設計思路 首先從鍵盤鍵入兩個整數 其次是交換兩個數的內容 不採用中間變數,我們可以選擇加減法,首先把a b的值賦給a,再把新的a減掉b,即實現b的值變為...

不用臨時變數交換兩個數的值

就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...

不用臨時變數交換兩個數的值

就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...