Возможно ли это в заявлении коммутатора? (C++)

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, но когда я всегда ставлю break; и перейти к следующему случаю, я всегда сталкиваюсь с проблемой. Можно ли выбрать целые числа с помощью переключателя? Или я делаю это неправильно? Я делаю текстовую игру для моего тематического исследования, которое пройдет в пятницу.

Заранее спасибо. Ура!

3 ответа

Решение

Ваш синтаксис немного отклонен - ​​вам нужно заключить switch блок в фигурных скобках:

switch(cstats)
{
    case 1:
        atk = 15;
        def = 5;
        agi = 5;
        break;
}

Помимо отсутствующих фигурных скобок в операторе switch. cstats является неопределенным, и чтение его перед определением каким-либо образом является неопределенным поведением.

Прочтите о том, как получить целое число из командной строки здесь: http://www.cplusplus.com/forum/articles/6046/

Кроме того, вы должны всегда определять свои переменные, предпочтительно при инициализации, это намного безопаснее и намного легче отлаживать, когда у вас есть тысячи строк кода, и то, что происходит, не имеет абсолютно никакого смысла, как это часто бывает в случае с неопределенное поведение.

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

    cin >> cstats;
    switch(cstats)
    {
        case 1:
            atk = 15;
            def = 5;
            agi = 5;
            break;
        case 2:
                   //other code
            break;
        ....
        default:
          //Here you can prompt to select 1,2,3 or 4
    }
}
Другие вопросы по тегам