一个函数的问题,百思不得其解 。请各位帮我看看
/* file1.c */#include "file2.c"
#include "file3.c"
#include
int i=1;
next()
{ return(i++);}
void main()
{
int i,j;
i=reset();
for(j=1;j<=3;j++)
{
printf("i=%d\t j=%d\t",i,j);
printf("next()=%d\t",next());
printf("last()=%d\t",last());
printf("now(i+j)=%d\t",now(i+j));
printf("\n");
}
}
/* file2.c */
static int i=10;
last()
{ return(i-=1);}
now(int i)
{
static int j=5;
return(i=j+=++i);
}
/* file3.c */
extern int i;
reset()
{ return(i);}
书上说程序结果是:
i=1 j=1 next()=1 last()=9 new(i+j)=8
i=1 j=2 next()=2 last()=8 new(i+j)=12
i=1 j=3 next()=3 last()=7 new(i+j)=17
怎么i的值一直是1啊?虽然main函数里重新定义了一个i,但这儿有一个 i=reset();,而且file3.c里的i明明说extern说明了的啊?高手求解!!!
还有,怎么我用vc 6.0编译的时候他会给我报错:
file1.c(4) : error C2374: 'i' : redefinition; multiple initialization
file2.c(1) : see declaration of 'i'
file2.c的i是static的啊...搞不懂...只好重新改了个 名字。
高手帮帮我吧...