#include
using namespace std;
int main()
{
{
int x=1;
cout<<x<<endl;//輸出1
{
cout<<x<<endl;//我認為輸出隨機值實際輸出1
int x=2;
cout<<x<<endl;//輸出2
{
cout<<x<<endl;//我認為輸出隨機值實際輸出2
int x=3;
cout<<x<<endl;//輸出3
}
cout<<x<<endl;//輸出2
}
cout<<x<<endl;//輸出1
}
}//為什麼
int main()
{
{
int x=1;
cout<<x<<endl;//輸出1
{
cout<<x<<endl;//我認為輸出隨機值實際輸出1
//** 編譯器編譯時查找x的標識符,此時未找到此定義域中的x=2,所以用了上一層的x=1
int x=2;
cout<<x<<endl;//輸出2
{
cout<<x<<endl;//我認為輸出隨機值實際輸出2
//** 編譯器編譯時查找x的標識符,此時未找到此定義域中的x=3,所以用了上一層的x=2
int x=3;
cout<<x<<endl;//輸出3
}
cout<<x<<endl;//輸出2
}
cout<<x<<endl;//輸出1
}
}//為什麼
//** 編譯器會編譯時找到相同的變量標識x,會現在當前作用域位置,如果沒有就往上一層找。