交換兩個整數不通過中間變量

技巧:對於兩個整數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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章