交换两个整数不通过中间变量

来源:互联网 发布:vb if 编辑:程序博客网 时间:2024/06/01 09:56

技巧:对于两个整数x,y,有x^x^y = x^y^x = y^x^x = y,^代表异或。异或:两个位的值不相同,则结果为1,如果两个位值相同,则结果为0。

如 2^2^3 = 2^3^2 = 3^2^2 = 2

所以其C++代码如下:

#include <iostream>int main(){    int x = 2, y = 3;    x = x^y;    y = x^y;    x = x^y;    std::cout<<"x = "<<x<<" , y = "<<y<<std::endl;    return 0;}

//输出结果为:x = 3 , y = 2

0 0