考虑以下代码:
#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
的作用域,但是我想知道为什么,例如为什么不能在多种情况下的 switch 语句中定义 non-POD。