●ファイルスコープ
関数外で宣言され、どこでも使用できるようソースの最後まで存在する
●ブロックスコープ
ブロック内で宣言され、ブロック内でのみ存在する
同じ名前の変数 x が2つ存在する場合、ブロックスコープの x へのアクセスが優先される
int x = 555;
int main(void)
{
cout << "x = " << x << '\n'; // ファイルスコープ
int x = 333;
cout << "x = " << x << '\n'; // ブロックスコープ
cout << "x = " << ::x << '\n'; // ファイルスコープ (スコープ解決演算子を使う)
}
-----------------------
実行結果:
x = 555;
x = 333;
x = 555;
-----------------------
関数外で宣言され、どこでも使用できるようソースの最後まで存在する
●ブロックスコープ
ブロック内で宣言され、ブロック内でのみ存在する
同じ名前の変数 x が2つ存在する場合、ブロックスコープの x へのアクセスが優先される
int x = 555;
int main(void)
{
cout << "x = " << x << '\n'; // ファイルスコープ
int x = 333;
cout << "x = " << x << '\n'; // ブロックスコープ
cout << "x = " << ::x << '\n'; // ファイルスコープ (スコープ解決演算子を使う)
}
-----------------------
実行結果:
x = 555;
x = 333;
x = 555;
-----------------------