Consider the following code:
#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++ complains crosses initialization of 'int r'
. My questions are:
- What is
crosses initialization
?
- Why do the first initializer
x + y
pass the compilation, but the latter failed?
- What are the problems of so-called
crosses initialization
?
I know I should use brackets to specify the scope of r
, but I want to know why, for example why non-POD could not be defined in a multi-case switch statement.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…