次のコードについて考えてみます。
#include <iostream>
using namespace std;
int main()
{
int x, y, i;
cin >> x >> y >> i;
switch(i) {
case 1:
// int r = x + y; -- OK
int r = 1; // Failed to Compile
cout << r;
break;
case 2:
r = x - y;
cout << r;
break;
};
}
G ++は文句を言いcrosses initialization of 'int r'
ます。私の質問は次のとおりです。
- 何
crosses initialization
ですか? - 最初の初期化子
x + y
がコンパイルに合格したのに、後者が失敗したのはなぜですか? - いわゆるの問題は何
crosses initialization
ですか?
のスコープを指定するために角かっこを使用する必要があることはわかっていますが、r
たとえば、非PODをマルチケースswitchステートメントで定義できなかった理由を知りたいです。