为什么是这结果
#include<iostream>
using namespace std;
void func();
int n=1;
void main()
{ static int x=5;
int y;
y=n;
cout<<"main x="<<x<<",y="<<y<<",n="<<n<<endl;
fun();
cout<<"main x="<<x<<",y="<<y<<",n="<<n<<endl;
}
void func()
{ static int x=4;
int y=10;
x+=2; n+=10; y+=n;
cout<<"func x="<<x<<",y="<<y<<",n="<<n<<endl;
}
这个程序输出结果最后一行为什么是
main x=5,y=1,n=11
[解决办法]
void main()
{ static int x=5;
int y;
y=n;
cout<<"main x="<<x<<",y="<<y<<",n="<<n<<endl;
func(); // fun();
cout<<"main x="<<x<<",y="<<y<<",n="<<n<<endl;
}
[解决办法]
y不用解释
n是全局变量 也不用解释
至于x涉及到作用域的问题
[解决办法]
注意 n 是全局变量,
main 函数中的 x y 只在main函数中有效
func 函数中的 x y 只在func函数中有效
[解决办法]
n是全局变量,在整个工程,所有的函数里,都能改变它的值,
执行func();以后,n=1+10;
func()里的x,y和main函数里的无关,只是名字和main里的一样,
实际内存地址并不一样。
所以x,y,实际上就没变,输出的是main()函数里的x和y。
所以x=5,y=1,n=11;
[解决办法]
这个问题说明你对静态变量还没有熟练地掌握,并且对全局变量和局部变量不是那么的明白?
首先fnuc()函数中的y是局部变量,即调用此函数后他的生命周期到此结束,所以main()函数的输入y就是cout<< 输出的数字;
[解决办法]
scope的问题
[解决办法]
变量作用域问题
[解决办法]
作用域问题。。。。。细看了下,func里面重新定义了个局部变量y,最后输出的时候,变得只有n,x和y都没变过