如何交换两个变量的值而不借助于临时变量

如何交换两个变量的值?一般我们是这样做的:

1
2
3
4
5
6
int a = 10;  
int b = 20;

int temp = a;
a = b;
b = temp;

这样借助于第三个临时变量,清晰易懂。如何不借助于第三个临时变量来实现两个数值的交换?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>  

int main()
{
    int a = 10;
    int 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;
}

输出:

1
2
交换前:a = 10, b = 20  
交换后:a = 20, b = 10

关键代码:

1
2
3
a = a + b;  
b = a - b;
a = a - b;
感谢支持!