//不创建临时变量交换两个变量的值
void exchange(){
int a=3;
int b=5;
printf("交换前a=%d,b=%d\n",a,b);
/*法一:存在溢出的风险
a=a+b;
b=a-b;
a=a-b;
*/
//法二
a=a^b; //a=3^5
b=a^b; //b=3^5^3=5
a=a^b; //a=3^5^5=3
//相同的数异或为0,一个数与0异或还是自身
//异或具有交换律3^3^5==3^5^3==5
//3^0=3
//011 3
//000 0
//011 3^0=3
//3^3=0
//011 3
//011 3
//000 3^3=0
//3^3^5=0^5=5
//3^3^5=3^5^3=5(交换律)
//011 3
//101 5
//110 3^5=6
//011 3
//101 6^3=5
printf("交换后a=%d,b=%d\n",a,b);
}
不创建临时变量交换两个变量的值——C语言
最新推荐文章于 2024-05-18 16:42:38 发布