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 }

 

 

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 
*/
 

 

 

 

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 */

 

 


 

 

posted @ 2010-04-08 00:03  Freedom  阅读(297)  评论(0编辑  收藏  举报