在这里,我试图使一个函数,可以交换两个值没有第三个变量。除了下面所述的实现之外,还有什么其他实现可以做到这一点?
void swap(int* x, int* y)
{
(*x)=(*x)+(*y);
(*y)=(*x)-(*y);
(*x)=(*x)-(*y);
}
看起来你正在尝试做XOR
交换技巧?
#include <stdio.h>
void swap(int* x, int* y)
{
*x^=*y;
*y^=*x;
*x^=*y;
}
int main(){
int x = 1;
int y = 2;
swap(&x, &y);
printf("x = %d, y =%dn", x, y);
}
它实际上应该可以工作…
我在你的函数中使用了以下代码:
void swap(int* x, int* y)
{
(*x)=(*x)+(*y);
(*y)=(*x)-(*y);
(*x)=(*x)-(*y);
}
int a1=1;
int a2=2;
main()
{
swap(&a1,&a2);
printf("a1= %dna2= %d n",a1 ,a2);
}