名称空间(上)的程序运行结果
接下来是变量作用域的问题(这个我个人觉的还是蛮重要的,在编程中经常会遇到变量申明的问题,所已这专名总结了下):
/* 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; }