将两个数对调,不用第三个变量,c语言
时间: 2024-09-28 07:13:42 浏览: 63
c代码-2.功能:不用第三个变量,实现两个数的对调操作。
在C语言中,如果不需要额外的存储空间,可以利用异或(XOR)运算符来实现两个整数的无暂存交换,因为对于相同的数字进行两次异或操作结果会等于0,不会改变原有的值。下面是代码示例:
```c
#include <stdio.h>
void swapWithoutTemp(int* a, int* b) {
*a = *a ^ *b; // a = a XOR b
*b = *a ^ *b; // b = (a XOR b) XOR b = a
*a = *a ^ *b; // a = a XOR b = original value of b
}
int main() {
int num1 = 5;
int num2 = 10;
printf("Before swap: num1 = %d, num2 = %d\n", num1, num2);
swapWithoutTemp(&num1, &num2);
printf("After swap: num1 = %d, num2 = %d\n", num1, num2);
return 0;
}
```
这个程序首先将`*a`与`*b`异或到`*a`,然后把结果再异或回`*b`,最后再次异或回`*a`,就完成了两个数的交换。
阅读全文