交换两个变量的值C语言
时间: 2023-12-11 12:28:22 浏览: 39
方法一:使用临时变量法,创建一个临时变量,用来作为传递值的中介。
```c
#include <stdio.h>
int main() {
int a = 10, b = 20, temp;
printf("交换前:a=%d b=%d\n", a, b);
temp = a;
a = b;
b = temp;
printf("交换后:a=%d b=%d\n", a, b);
return 0;
}
```
方法二:使用加减交换法,先将a、b的值保存在a中,然后用更改后的a和初始b的值进行减法就可以得到交换后的b的值,即a。
```c
#include <stdio.h>
int main() {
int a = 10, b = 20;
printf("交换前:a=%d b=%d\n", a, b);
a = a + b;
b = a - b; // b = (a + b) - b = a
a = a - b; // a = (a + b) - a = b
printf("交换后:a=%d b=%d\n", a, b);
return 0;
}
```
方法三:使用异或交换法,先将a ^ b的值保存到a中,然后a ^ b ^ b = a,可以把a的值传给b。
```c
#include <stdio.h>
int main() {
int a = 10, b = 20;
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);
return 0;
}
```
方法四:使用移位交换法,将int类型的a的值拆分为高16位和低16位,将分出来的一个16位作为暂存空间。
```c
#include <stdio.h>
int main() {
int a = 10, b = 20;
printf("交换前:a=%d b=%d\n", a, b);
a <<= 16;
a |= b;
b = a >> 16;
a = a & 0xffff;
printf("交换后:a=%d b=%d\n", a, b);
return 0;
}
```