名称空间(上)的程序运行结果
接下来是变量作用域的问题(这个我个人觉的还是蛮重要的,在编程中经常会遇到变量申明的问题,所已这专名总结了下):
/*
1)在两个不同的代码块里可以重名
2)同一命名空间里不可以重名
3)循环里也是一个独立的代码块
4)变量的作用域为:自己所在的代码块,及该代码块所包含的其他代码块!
变量有效值,为离自己最近的代码快(当然这里的最近,不是真正的距离上的最近,值得代码快的包含等级,
比如
代码块A
{
代码块B
{
代码块C{}
}
}
代码快D{}
则代码块C距B,比距A更近!
代码D于B、C都没包含的关系
(额,自己不知道这里有米有说清楚)
*/
int i=0;
int _tmain(int argc, _TCHAR* argv[])
//代码块A
{
using namespace std;
cout<<i<<endl; //输出0---全局
int i=1;
//代码块B
{
cout<<i<<endl; //输出1------代码块A的全局变量!
//代码块B 有一个全局变量i,然后又申请了一个代码块B的局部变量i,在该局部i申明后的代码里i都指的是局部i!
int i=2;
cout<<i<<endl; //输出2-----代码块B的局部变量i
//代码块C
{
cout<<i;//2,代码块B的值
}
}
//int i=3; //报错,“i”: 重定义;多次初始化-------在同一代码块里不能有重名的申明和定义!
cout<<i<<endl; //输出1,代码块A,
//在for循环里或在for语句中申明定义的变量,只在循环代码块中有效
for(int j=0;j<3;j++)
//代码块C
{
cout<<"for 中j="<<j<<endl;
}
//cout<<j; //ERROR“j”: 未声明的标识符----说明在for中定义的j作用域仅仅只在循环内!
/*int j=7;
cout<<"for 外j="<<j<<endl;*/
return 0;
}