可能重复:
Swapping two variable value without using 3rd variable
我们有
int a=4;
int b=7;
我可以在不使用第三个变量的情况下交换这些号码吗?
答案 0 :(得分:3)
a=a+b;
b=a-b;
a=a-b;
答案 1 :(得分:2)
课程的精确实施取决于您使用的编程语言,但请查看XOR swap。
C中的一个例子可能是
#include <stdio.h>
/* Swaps the content pointed to by a and b. The memory pointed to is
assumed non-overlapping! */
void swap(int* a, int* b)
{
*a = (*a)^(*b);
*b = (*a)^(*b);
*a = (*a)^(*b);
}
int main(int argc, char** argv)
{
int a = 4;
int b = 7;
printf("a=%d, b=%d\n", a, b);
swap(&a, &b);
printf("a=%d, b=%d\n", a, b);
return 0;
}
重要:正如Prasoon Saurav对问题本身发表评论一样,this answer对另一个问题比我的更正确,因为这两个变量位于非重叠位置很重要在记忆中。我的例子没有检查这个。
答案 2 :(得分:1)
A = A + B; // A = 11,B = 7
B = A-B; //一个= 11,B4
A = A-B; // A = 7,B = 4
或
α= A * B;
B = A / B;
A = B / A;
但请注意此方法,某些组合可能会出现溢出或下溢。
答案 3 :(得分:0)
当然:a,b = b,a
适用于各种编程语言。
在其他人中,您可以使用xor trick。