CS-APP:Section 5.1,Practice Problem 5.1:Swap value testing

Swap value different implementation:

 1 void swap1(int *xp, int *yp)
 2 {
 3     *xp = *xp + *yp;
 4     *yp = *xp - *yp;
 5     *xp = *xp - *yp;
 6 }
 7 void swap2(int *xp, int *yp)
 8 {
 9     int a = *xp;
10     *xp = *yp;
11     *yp = a;
12 }

 

 

testing code :

 1 /*
 2  ============================================================================
 3  Name        : test.c
 4  Author      : Gump Yin
 5  Version     :
 6  Copyright   : www.cnblogs.com/BpLoveGcy/
 7  Description : Hello World in C, Ansi-style
 8  ============================================================================
 9  */
10 
11 #include <stdio.h>
12 #include <stdlib.h>
13 
14 void swap1(int *xp, int *yp)
15 {
16     *xp = *xp + *yp;
17     *yp = *xp - *yp;
18     *xp = *xp - *yp;
19 }
20 void swap2(int *xp, int *yp)
21 {
22     int a = *xp;
23     *xp = *yp;
24     *yp = a;
25 }
26 
27 int main(void) {
28     int a = 1,b =2;
29     printf("a = %d;b = %d \n",a,b);
30     swap1(&a,&b);
31     printf("swap1 xp != yp :a = %d;b= %d\n",a,b);
32 
33     a = 1;b =2;
34     printf("a = %d;b = %d \n",a,b);
35     swap2(&a,&b);
36     printf("swap2 xp != yp :a = %d;b= %d\n",a,b);
37     int c = 3;
38     printf("c = %d;c = %d \n",c,c);
39     swap1(&c,&c);
40     printf("swap1 xp == yp :c = %d\n",c);
41     c = 3;
42     printf("c = %d;c = %d \n",c,c);
43     swap2(&c,&c);
44     printf("swap2 xp == yp :c = %d\n",c);
45     return EXIT_SUCCESS;
46 }
47 

 

 

testing result:

 

1 = 1;b = 2 
2 swap1 xp != yp :a = 2;b= 1
3 = 1;b = 2 
4 swap2 xp != yp :a = 2;b= 1
5 = 3;c = 3 
6 swap1 xp == yp :c = 0
7 = 3;c = 3 
8 swap2 xp == yp :c = 3
9 

 

 

 

posted @ 2010-04-07 23:50  Freedom  阅读(295)  评论(0编辑  收藏  举报