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 }
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
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 a = 1;b = 2
2 swap1 xp != yp :a = 2;b= 1
3 a = 1;b = 2
4 swap2 xp != yp :a = 2;b= 1
5 c = 3;c = 3
6 swap1 xp == yp :c = 0
7 c = 3;c = 3
8 swap2 xp == yp :c = 3
9
2 swap1 xp != yp :a = 2;b= 1
3 a = 1;b = 2
4 swap2 xp != yp :a = 2;b= 1
5 c = 3;c = 3
6 swap1 xp == yp :c = 0
7 c = 3;c = 3
8 swap2 xp == yp :c = 3
9