变量的生存期的一段程序?

来源:百度知道 编辑:UC知道 时间:2024/06/02 20:03:24
程序如下:
#include <stdio.h>

int i=1;
int next(int j);
int last(int j);
int New(int i);

int reset()
{
return (i);
}

void main(void)
{
int i,j=1;
i=reset();
for(j=1;j<=3;j++)
{
printf("i=%d,j=%d\n",i,j);
printf("next(i)=%d\n",next(i));
printf("last(i)=%d\n",last(i));
printf("New(i+j)=%d\n",New(i+j));
}
}

int next(int j)
{
return (j=i++);
}

int last(int j)
{
static int i=10;
return (j=i--);
}

int New(int i)
{
int j=10;
return (i=j+=i);
}

以下是运行结果:
i=1,j=1
next(i)=1
last(i)=10
New(i+j)=12
i=1,j=2
next(i)=2
last(i)=9
New(i+j)=13
i=1,j=3
next(i)=3
last(i)=8
New(i+j)=14

我的问题:
1、当第一次进入循环,i=1,j=1 时, return (j=i++);语句使i的值增值为

1,不会影响,两个i是不同的i
2,每次运行都重置,和外围i相同,最开始定义的那个i一样的值,都=1
3,是
4,1=1,return (j=i++)中的i和printf("i=%d,j=%d\n",i,j);中的i没什么关系,printf("i=%d,j=%d\n",i,j);中的i是i=reset(); 中的i,没有改变过。