不用变量交换两个int变量的值的分析

不用变量交换两个int变量的值代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdlib.h>    
#include <stdio.h>

// 不用变量交换两个int变量的值
int random();
int main()
{
int a = random();
int b = random();
printf("a=%d, b = %d\n", a, b);
a = a ^ b; // 此时a = a ^ b;
b = a ^ b; // 此时右边a = a ^ b; 代入b = a ^ b得b = a ^ b ^ b; 即b = a;
a = a ^ b; // 此时右边a = a ^ b; b = a;代入 a = a ^ b ^ a;即a = b;
printf("a=%d, b = %d\n", a, b);
getchar();
return 0;
}
int random()
{
if (1&rand())
{
return rand();
}
return -rand();
}