C++ 为什么我的switch语句不能移到下一个案例?
这是我的开场白。正如你在代码上看到的。我想用switch语句得到一个不同的整数,但当我总是把break放进去时;然后继续下一个案例,我总是遇到一个问题。是否可以使用开关对整数进行选择?还是我只是做错了?我正在制作一个基于文本的游戏。您的语法有点不正确-您需要将开关块用大括号括起来:C++ 为什么我的switch语句不能移到下一个案例?,c++,integer,switch-statement,C++,Integer,Switch Statement,这是我的开场白。正如你在代码上看到的。我想用switch语句得到一个不同的整数,但当我总是把break放进去时;然后继续下一个案例,我总是遇到一个问题。是否可以使用开关对整数进行选择?还是我只是做错了?我正在制作一个基于文本的游戏。您的语法有点不正确-您需要将开关块用大括号括起来: int main() { int cstats, choice; int rhp, hp, i, init, atk, def, matk, mdef, dmg, mdmg, agi, magi;
int main()
{
int cstats, choice;
int rhp, hp, i, init, atk, def, matk, mdef, dmg, mdmg, agi, magi;
cout << "Please choose your specialty: ";
cout << "[1] Offense [2] Magic [3] Defense [4] Speed";
switch(cstats)
case 1:
atk = 15;
def = 5;
agi = 5;
break;
}
除了switch语句中缺少的大括号之外。cstats是未定义的,在以某种方式定义它之前读取它是未定义的行为
switch(cstats)
{
case 1:
atk = 15;
def = 5;
agi = 5;
break;
}
在此处阅读如何从命令行获取整数:
另一方面,您应该始终定义变量,最好是在初始化时,当您有数千行代码,并且发生的事情完全没有意义时,它会更安全,调试也会更容易,这在未定义行为的情况下通常是如此。除了下面的答案,您还需要从用户处获取cstats的值。我已经添加了该部分。我之前忘了。哦,是的。我忘记了cin>>cstats;
switch(cstats)
{
case 1:
atk = 15;
def = 5;
agi = 5;
break;
}