不用額外變數交換兩個整數的值

2021-10-24 17:19:32 字數 657 閱讀 1824

不用額外變數交換兩個整數的值

不用額外變數交換兩個整數的值。

輸入描述:

輸入一行,包含兩個整數n和m(−1

09≤n

,m≤1

09

)(-10^9 \leq n,m \leq 10^9)

(−109≤

n,m≤

109)

。輸出描述:

輸出交換後的n和m的值。

示例1輸入

2 3
輸出
3 2
備註:

時間複雜度o(1

)o(1)

o(1)

,額外空間複雜度o(1

)o(1)

o(1)

。三行**:

假設 a 與 b 異或的結果為 c ,c 就是 a 整數字資訊和 b 整數字資訊的所有不同資訊。

在執行完第一行**後, a 變成了 c ,b 不變;執行完第二行**後, a 仍是 c ,而 b 變成了 a;執行完第三行**, a 變成了 b ,而 b 仍是 a 。

**:

#include

using

namespace std;

intmain

(void

)

不用額外變數交換兩個整數的值

題目 如何不用任何額外變數交換兩個整數的值 基本思路 如果給定整數a和b使用如下三行 即可交換a和b的值 a a b b a b a a b 如何理解這三行 的具體功能呢?首先要理解關於異或運算的特點 假設a異或b的結果為c,c就是a整數字資訊和b整數字資訊的所有不同的資訊。比如 a 4 100,b...

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

在學習c語言的時候,涉及到兩個變數值的交換,其中用到臨時變數。類似於 temp a a b b temp 這樣的語句,如果在沒有臨時變數的情況下,該如何做呢?網路上的人們給出了兩種方法 一 異或法 a a b b b a a a b 二 加減法 a a b b a b a a b 其實我們看加減法更...

不用引入第三變數交換兩個變數的值

前幾天發現了乙個問題 有人告訴我,要進行變數交換,就必須引入第三變數!假設我們要交換a和b變數的值,如果寫成 int a 5,b 10 a b b a 那麼結果就是兩個都是10,理由不言而喻。所以就應該引入第三變數,在a的值被覆蓋之前就把a的值保留好。int a 5,b 10,tmp tmp a a...