2015-11-02 129 views
-2

在某些語言中...我知道這是作爲指數運算符。 但在下面的C++代碼中,我相信這是用來交換char &achar &b。我期待了解表面下面發生了什麼,以及如果確實按照我認爲的做法行事,這種說法是如何起作用的。語句a = a^b如何在C++中工作?

void swap (char & a , char & b) { 
a = a^b ; 
b = a^b ; 
a = a^b ; 
} 
+4

這是XOR運算符。 – Dai

+0

@戴你能否詳細解釋一下你的答案?請和謝謝 – aSilveira

+1

@aSilveira:[Exclusive OR](https://en.wikipedia.org/wiki/Exclusive_or)。順便說一下,這不是交換變量的好方法,只需使用標準庫中的'std :: swap'即可。 – Blastfurnace

回答

1

您需要了解XOR幾件事情:

​​

現在

a=a^b 
b=a^b=a^b^b=a 
a=a^b=a^b^a=a^a^b=b 

所以你說現在可以看到,在年底a得到的b的balue和b獲得值a

2

讓我們開始只有一個位,看看所有可能的circumtances的:

B 0,1 0 1

第一條語句後:

a 0 1 1 0

b 0 1 0 1

secon d:

一個0 1 1 0

B 0,0 1 1

第三:

一個0 1 0 1

B 0,0 1 1

只要適用上面的每個位都是上面的列表。