使用操作符^不引入中间变量交换两个数

利用异或 ^ 来交换两个数的值,而且不引入其他变量。

unsigned int a=60;  //0011 1100
unsigned int b=13;  //0000 1101
a=a^b;              //a=a^b=0011 0001
b=a^b;              //b=a^b=0011 1100  相当于b1=(a^b)^b
a=a^b;              //a=a^b=0000 1101  相当于a1=(a^b)^((a^b)^b)

示例代码:

#include<stdio.h>

int main( )
{
    unsigned int a=60;         //0011 1100
    unsigned int b=13;         //0000 1101
    printf("a=%d,b=%d",a,b);   //输出a,b的值
    printf("\n");
    a=a^b;                     //a=a^b=0011 0001
    b=a^b;                     //b=a^b=0011 1100
    a=a^b;                     //a=a^b=0000 1101
    printf("a=%d,b=%d",a,b);   //输出a,b的值
}

 

原文出处:http://www.runoob.com/cprogramming/c-operators.html评论区

posted @ 2018-10-25 10:37  天南星2018  阅读(398)  评论(1)    收藏  举报