语句a = a ^ b如何在c ++中工作?

时间:2015-11-02 05:04:17

标签: c++ syntax swap

在某些语言中...... 我知道这是指数运算符。 但在下面的C ++代码中,我认为这用于交换if (strpos($_SERVER['HTTP_USER_AGENT'], 'OS 8_0') !== false) { echo "This is iOS 8"; } else{ echo "This is not iOS 8";} } char &a。我希望了解表面下发生了什么,以及如果确实按照我的想法行事,这个说法是如何运作的。

char &b

2 个答案:

答案 0 :(得分:2)

让我们从一点开始,看看所有可能的情况:

a 0 0 1 1

b 0 1 0 1

在第一个声明之后:

a 0 1 1 0

b 0 1 0 1

第二

a 0 1 1 0

b 0 0 1 1

第三

a 0 1 0 1

b 0 0 1 1

只需将上面的列表应用于每一位。

答案 1 :(得分:1)

你需要了解关于XOR的一些事情:

X^X=0
X^1= not X
X^0=X
X^Y=Y^X

现在

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

正如您所说,现在可以看到,a的结尾b得到了ba获得{{1}}的价值。