Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我的switch语句不能移到下一个案例?_C++_Integer_Switch Statement - Fatal编程技术网

C++ 为什么我的switch语句不能移到下一个案例?

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;

这是我的开场白。正如你在代码上看到的。我想用switch语句得到一个不同的整数,但当我总是把break放进去时;然后继续下一个案例,我总是遇到一个问题。是否可以使用开关对整数进行选择?还是我只是做错了?我正在制作一个基于文本的游戏。

您的语法有点不正确-您需要将开关块用大括号括起来:

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;
}