交换两个int变量的值,不能使用第三个变量。即 a=3,b=5,交换之后a=5,b=3;
#include<stdio.h>
int main()
{
int a=3;
int b=5;
printf("a=%d b=%d\n",a,b);
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d\n",a,b);
}
“^”——按位异或操作符,这里的按位的位指的是操作数二进制的位,相同为0相异为1.
3的二进制位为:0000 0000 0000 00011
5的二进制位为:0000 0000 0000 00101
注:
1、任何数按位异或自己本身都为0
int a=3;
a^a=a;
2、0与任何数按位异或都为异或的那个数
int a=3;
0^a=a;
输出的答案: