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

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

-1

Решение

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

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

Другие решения

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

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

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

1

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