在某些語言中...我知道這是作爲指數運算符。 但在下面的C++代碼中,我相信這是用來交換char &a
和char &b
。我期待了解表面下面發生了什麼,以及如果確實按照我認爲的做法行事,這種說法是如何起作用的。語句a = a^b如何在C++中工作?
void swap (char & a , char & b) {
a = a^b ;
b = a^b ;
a = a^b ;
}
在某些語言中...我知道這是作爲指數運算符。 但在下面的C++代碼中,我相信這是用來交換char &a
和char &b
。我期待了解表面下面發生了什麼,以及如果確實按照我認爲的做法行事,這種說法是如何起作用的。語句a = a^b如何在C++中工作?
void swap (char & a , char & b) {
a = a^b ;
b = a^b ;
a = a^b ;
}
您需要了解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
。
讓我們開始只有一個位,看看所有可能的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
只要適用上面的每個位都是上面的列表。
這是XOR運算符。 – Dai
@戴你能否詳細解釋一下你的答案?請和謝謝 – aSilveira
@aSilveira:[Exclusive OR](https://en.wikipedia.org/wiki/Exclusive_or)。順便說一下,這不是交換變量的好方法,只需使用標準庫中的'std :: swap'即可。 – Blastfurnace