若有下面程序段(C++问题。。)

来源:百度知道 编辑:UC知道 时间:2024/07/01 05:09:43
intx=1,y=2;
x=x^y;
y=y^x;
x=x^y;
则执行完上面语句后x和y的值分别是______和_______。

,顺便问下why...
谢谢!

^为“异或运算符”,规则是:若参加运算的两个二进制位相同(即同为0或同为1)则为0;反之(即一个为1另一个为0)则为1
x化为二进制为01
y化为二进制为10
x^y=01^10=11
则x变为11
y^x=10^11=01
则y变为01
x^y=11^01=10
此时x=10,y=01
化为十进制x=2,y=1

2-1

x y
01 10
x = x ^ y = 11
y = y ^ x = 11 ^ 10 = 01
x = x ^ y = 11 ^ 01 = 10
x = 2
y = 1

下面写的数字都是2进制 (^=XOR 异为1 同为0)
x=01 y=10
x=01 ^ 10 = 11
y= 10 ^ 11 = 01
x=11^ 01 = 10

so
x=10=2 y= 01=1

intx=1,y=2;
x=x^y; (1)
y=y^x; (2)
x=x^y; (3)
这样看 (1)中的左边X理解为一个未知数 右边是X1^Y1
得出左边那个x后转到(2)
(2)中左边的Y{也就是(3)中右边的那个Y,暂且设为Y2}
Y2=Y^(1)中左边的X=Y^Y1^X1=Y^Y^X
(3)中左边的X也可以理解为一个未知数 (3)右边的X是(1)中左边的X ,Y是(2)左边的Y

结果你自己算吧 作为一个c++的学习者要知道为什么 而不是结果

虽然我说的有点烦 但是你细细看看 就很容易理解了