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 + yprzechodzi 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.