C++17からのif文やswitch文内で変数の初期化ができる機能についてですが、
if文とelse if文の変数のスコープがよくわかりません。
C++
1 if (int i = 10; true) 2 { 3 std::cout << i << std::endl; //10 4 } 5 else if (int i = 20; true) 6 { 7 std::cout << i << std::endl; //20 8 } 9 10 if (int i = 10; true) 11 { 12 std::cout << i << std::endl; //10 13 } 14 else if (true) 15 { 16 std::cout << i << std::endl; //10 17 }
このようなコードで、上のif文も下のif文も問題なくコンパイルが通ります。
下のif文では、最初のifで宣言したiをelse if内で呼び出しても問題なく、
上のif文では、最初のifで宣言したiとelse ifで宣言したiを別物として扱っているようです。
しかし、そうすると最初のifで宣言したiのスコープはどこまでなのか?という疑問が出てきました。
このあたりの仕様について、教えていただけないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/05 06:02