CS-APP:Section 5.1,Memory aliasing:same function implementation ,different test result!
same function implementation ,different test result!
1 int f(int);
2
3 int func1(int x)
4 {
5 return f(x) + f(x) + f(x) + f(x);
6 }
7
8 int func2(int x)
9 {
10 return 4*f(x);
11 }
2
3 int func1(int x)
4 {
5 return f(x) + f(x) + f(x) + f(x);
6 }
7
8 int func2(int x)
9 {
10 return 4*f(x);
11 }
testing code1:
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 int f(int);
15
16 int func1(int x)
17 {
18 return f(x) + f(x) + f(x) + f(x);
19 }
20
21 int func2(int x)
22 {
23 return 4*f(x);
24 }
25
26 int counter = 0;
27 int f(int x)
28 {
29 return counter++;
30 }
31
32 int main(void) {
33 printf("func1(5)=%d\n",func1(5));
34
35 printf("func2(5)=%dn",func2(5));
36 return EXIT_SUCCESS;
37 }
38 // testing result:
39 /*
40 func1(5)=6
41 func2(5)=16
42
43 */
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 int f(int);
15
16 int func1(int x)
17 {
18 return f(x) + f(x) + f(x) + f(x);
19 }
20
21 int func2(int x)
22 {
23 return 4*f(x);
24 }
25
26 int counter = 0;
27 int f(int x)
28 {
29 return counter++;
30 }
31
32 int main(void) {
33 printf("func1(5)=%d\n",func1(5));
34
35 printf("func2(5)=%dn",func2(5));
36 return EXIT_SUCCESS;
37 }
38 // testing result:
39 /*
40 func1(5)=6
41 func2(5)=16
42
43 */
testing code2:
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 int f(int);
15
16 int func1(int x)
17 {
18 return f(x) + f(x) + f(x) + f(x);
19 }
20
21 int func2(int x)
22 {
23 return 4*f(x);
24 }
25
26 int counter = 0;
27 int f(int x)
28 {
29 return x++;
30 }
31
32 int main(void) {
33 printf("func1(5)=%d\n",func1(5));
34
35 printf("func2(5)=%d\n",func2(5));
36 return EXIT_SUCCESS;
37 }
38 /*
39 testing result:
40 func1(5)=20
41 func2(5)=20
42 */
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 int f(int);
15
16 int func1(int x)
17 {
18 return f(x) + f(x) + f(x) + f(x);
19 }
20
21 int func2(int x)
22 {
23 return 4*f(x);
24 }
25
26 int counter = 0;
27 int f(int x)
28 {
29 return x++;
30 }
31
32 int main(void) {
33 printf("func1(5)=%d\n",func1(5));
34
35 printf("func2(5)=%d\n",func2(5));
36 return EXIT_SUCCESS;
37 }
38 /*
39 testing result:
40 func1(5)=20
41 func2(5)=20
42 */