名稱空間(上)的程序運行結果
接下來是變量作用域的問題(這個我個人覺的還是蠻重要的,在編程中經常會遇到變量申明的問題,所已這專名總結了下):
/*
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;
}