1. 下面的工程含有3个cpp源程序,定义了auto、static和外部参照类三种存储类型变量,阅读程序写出运行结果,并从作用域和生存期两个角度对每个变量的行为进行详细描述。
//=================================
//file1.cpp
#include <stdlib.h>
#include <stdio.h>
int reset( );
int next( );
int last( );
int sum(int );
int i=1;
void main( )
{
auto int i,j;
i=reset( );
for(j=1;j<=3;j++)
{
printf("i=%d\tj=%d\n",i,j);
printf("next(i)=%d\n",next( ));
printf("last(i)=%d\n",last( ));
printf("sum(i+j)=%d\n",sum(i+j));
}
}
//=================================
//file2.cpp
static int i=10;
int next( )
{
return(i+=1);
}
int last( )
{
return(i-=1);
}
int sum(int i)
{
static int j=5;
return(i=j+=i);
}
//=================================
//file3.cpp
extern int i;
int reset( )
{
return(i);
}
另外,将int sum(int i){...}的参数改成void,即int sum(void){...},写出运行结果。
若注释掉file1.cpp的外部参照型变量i的定义语句int i=1;,工程将出现什么情况?