交换变量值的5种方法

 1 #include <stdio.h>
 2 
 3 #define swap_macro_0(a, b) \
 4     do { \
 5             typeof(a) c; \
 6             c = a; \
 7             a = b; \
 8             b = c; \
 9     } while(0)
10 
11 #define swap_macro_1(a, b) \
12     do { \
13             a = a + b; \
14             b = a - b; \
15             a = a - b; \
16     }while(0)
17 
18 #define swap_macro_2(a, b) \
19     do { \
20             a = a ^ b; \
21             b = a ^ b; \
22             a = a ^ b; \
23     }while(0)
24 
25 #define swap_macro_3(a, b) \
26     do { \
27            a = a * b; \
28            b = a / b; \
29            a = a / b; \
30     }while(0);
31     
32 #define swap_macro_4(a, b) \
33     do { \
34             a = a + b - (b = a); \
35     }while(0);
36     
37 int main()
38 {
39     int type, a, b;
40     
41     scanf("%d, %d, %d", &type, &a, &b);
42     printf("before a = %d, b = %d\n", a, b);
43     switch(type)
44     {
45         case 0:
46             {
47                 swap_macro_0(a, b);
48                 break;
49             }
50         case 1:
51             {
52                 swap_macro_1(a, b);
53                 break;
54             }
55         case 2:
56             {
57                 swap_macro_2(a, b);
58                 break;
59             }
60         case 3:
61             {
62                 swap_macro_3(a, b);   
63                 break;      
64             }
65         case 4:
66             {
67                 swap_macro_4(a, b);   
68                 break; 
69             }
70         default:
71             {
72                 printf("unknown swap type!\n");
73                 return 0;
74             }
75     }
76     printf("after a = %d, b = %d\n", a, b);
77     return 0;
78 }

 

posted @ 2013-07-28 09:00  tanghuimin0713  阅读(635)  评论(8编辑  收藏  举报