前几天同学去面试,聊了聊,说到一个问题,交换两个变量而不引入第三个变量,可能是我太RZ,不清,从网上找了找,写个例子如下:
(主要利用了--异或 操作!位操作)
1 #include<stdio.h>
2
3 void swap(int *a ,int *b);
4 int main()
5 {
6 int a ,b;
7 printf("please input two number:/n");
8 scanf("%d %d" ,&a ,&b);
9
10 printf("a = %d ,b = %d /n" ,a ,b);
11 printf("after exchange /n");
12
13 swap(&a ,&b);
14 printf("a = %d ,b = %d /n" ,a ,b);
15 return 0;
16 }
17
18 void swap(int *a ,int *b)
19 {
20 *a = *a ^ *b;
21 *b = *b ^ *a; //this moment ,the value in b is the *a
22 *a = *b ^ *a;
23 }
运行结果:
magic@ubuntu:~/work/day11.1/redirection$ ./a.out
please input two number:
3
5
a = 3 ,b = 5
after exchange
a = 5 ,b = 3
参考:
http://www.cnblogs.com/coolbug/archive/2004/09/27/47068.aspx