考虑以下代码:
#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语句中定义非POD。