题:在不创建第三个变量的情况下实现a=3,b=5,两个数的交换。

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);

上面为第一种方法,通过按(二进制)位异或‘^’实现。

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);

第二种方法,通过a,b两个数的加减实现。