帮忙看下VC++输出结果对不对

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:26:15
#include <iostream.h>
void func();

int n=1;
void main()
{
static int x=5; //静态
int y; y=n;
cout<<"Main-x="<<x<<",y="<<y<<",n="<<n<<endl; //main-x=5,y=1,n=1
func();//func-x=6,y=21,n=11
cout<<"Main-x="<<x<<",y="<<y<<",n="<<n<<endl;//main-x=5,y=1,n=11
func();//func-x=6,y=31,n=21
}
void func()
{
static int x=4;
int y=10; x+=2;n+=10;y+=n;
cout<<"Func-x="<<x<<",y="<<y<<",n="<<n<<endl;
}
看不懂为什么倒数第3个不是y=21

倒数第三个y,是func()中的y.func()函数中重新定义了一个y的嘛.int y =10;
所以func()函数操作的是自己的y,而不会影响到main()函数的y.其实看func()函数不接受参数,就大概知道,func()函数只能修改到全局变量的值,而不会影响到main()所定义的变量.
由于func()里面static int x=4; 也是全局变量,所以一直存在于内存中,所以调用了两次func(),也就是x也就被加了两次2,所以最后的Func-x=8

最后一次输出 x = 8;