Rozważ następujący kod:
#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 ++ narzeka crosses initialization of 'int r'
. Moje pytania to:
- Co to jest
crosses initialization
? - Dlaczego pierwszy inicjator
x + y
przechodzi kompilację, a drugi zawiódł? - Jakie są problemy z tzw
crosses initialization
?
Wiem, że powinienem użyć nawiasów, aby określić zakres r
, ale chcę wiedzieć, dlaczego, na przykład, dlaczego nie można zdefiniować POD-POD w instrukcji przełącznika wielozadaniowego.