1.加减法
#include <stdio.h>
int main(int argc, char *argv[])
{
int a=1,b=2;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d b=%d",a,b);
}
适用于交换整型变量,浮点型变量交换可能会损失精度。
2.乘除法
#include <stdio.h>
int main(int argc, char *argv[])
{
int a=1,b=2;
a = a * b;
b = a / b;
a = a / b;
printf("a=%d b=%d",a,b);
}
其中a, b必须为非0值,适用于交换整型变量,浮点型变量交换可能会损失精度。
3.异或法
#include <stdio.h>
int main(int argc, char *argv[])
{
int a=1,b=2;
a ^= b;
b ^= a;
a ^= b;
printf("a=%d b=%d",a,b);
}
只适用于对整型变量进行交换,不适用于浮点型变量交换。
4.强制转换移位法
#include <stdio.h>
int main(int argc, char *argv[])
{
int a=1,b=2;
b = (long int)((long int)a << 32 | (a = b)) >> 32;
printf("a=%d b=%d",a,b);
}
只适用于对整型变量进行交换,不适用于浮点型变量交换。