方法一:
若a=a+b,则此时a=8,b=5
令b=a-b,则此时a=8,b=3
再a=a-b,则此时a=5,b=3
代码如下:
#include <stdio.h>
int main()
{
int a=3;
int b=5;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d,b=%d\n",a,b);
return 0;
}
运行结果如下:
方法一当输入数字值过大时,可能会溢出
方法二:
已知a=3的二进制表示为011,b=5的二进制表示为101
将a与b异或
先a=a^b,此时a的二进制表示为110,a=6
再b=a^b,此时b的二进制表示为011,b=3
最后a=a^b,此时a的二进制表示为101,a=5
代码如下:
#include <stdio.h>
int main()
{
int a=3;
int b=5;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d,b=%d\n",a,b);
return 0;
}
运行结果如下: