您的位置:首页 > 移动开发

CS-APP:Section 5.1,Memory aliasing:same function implementation ,different test result!

2010-04-08 00:03 375 查看
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 {
return 4*f(x);
}

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

#include <stdio.h>
#include <stdlib.h>

int f(int);

int func1(int x)
{
return f(x) + f(x) + f(x) + f(x);
}

int func2(int x)
{
return 4*f(x);
}

int counter = 0;
int f(int x)
{
return x++;
}

int main(void) {
printf("func1(5)=%d\n",func1(5));

printf("func2(5)=%d\n",func2(5));
return EXIT_SUCCESS;
}
/*
testing result:
func1(5)=20
func2(5)=20
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: