1.
创建第三个整型变量temp,作为交换时的载体:
#include<stdio.h>
int main(){
int a=1,b=2;
int temp=0;
temp=a;
a=b;
b=temp;
printf("%d %d",a,b);
return 0;
}
2.
将两个数相加,用所相加的值来得出交换的值:
#include<stdio.h>
int main(){
int a=1,b=2;
printf("a=%d b=%d",a+b-a,a+b-b);
return 0;
}
但是,这个方法会有不足的地方,如果a+b的值大于int型所规定的范围,那么,结果就会出错。
3.
所以我们采用位操作符来解决。
^ 这个是按位异或操作符;
作为双目操作符,它可以将两个操作数的二进制形式,按位进行异或操作。
a=00000000000000000000000000000001;
b=00000000000000000000000000000010;
a^b=00000000000000000000000000000011;
a=a^b^a=00000000000000000000000000000010;
b=a^b^b=00000000000000000000000000000001;
所以代码如下:
#include<stdio.h>
int main(){
int a=1,b=2;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d b=%d",a,b);
return 0;
}