C ++ If / Else операторы пропускаются - PullRequest
0 голосов
/ 21 октября 2018

Я пишу программу Craps как школьное задание.В этом коде, независимо от того, что бросок костей, программа пропускает все блоки «если» и продолжается после последней строки в этом фрагменте.Генератор случайных чисел настроен на генерацию только чисел 1-12, поэтому каждое возвращение находится в этом диапазоне.

int diceRoll = ThrowDice();

if (diceRoll == '7' || diceRoll == '11')
{
    cout << "\nCongratulations! You won!!";
    didWin = true;
    UpdateBalance(didWin, bet);
}
else if (diceRoll == '2' || diceRoll == '3' || diceRoll == '12')
{
    cout << "\nYou lose!";
    didWin = false;
    UpdateBalance(didWin, bet);
}
else if (diceRoll == '1' || diceRoll == '4' || diceRoll == '5' || diceRoll == '6' || diceRoll == '8' || diceRoll == '9' || diceRoll == '10')
{
    int diceRollPoint = PlayPointRound(diceRoll);
    if (diceRollPoint == '7')
    {
        cout << "\n\nSorry, you lose!";
        didWin = false;
        UpdateBalance(didWin, bet);
    }
    else if (diceRollPoint == diceRoll)
    {
        cout << "\n\nYou won!!!";
        didWin = true;
        UpdateBalance(didWin, bet);
    }
}

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Запись '7' означает что-то отличное от записи 7.

Первый - это литерал charcter, который понимается как целочисленный код, соответствующий этому символу, а другой - просто целое число 7.

0 голосов
/ 21 октября 2018

Ваши броски костей представлены как int с, но вы сравниваете их с char литералами.Вы должны использовать int литералы, удаляя кавычки.Например:

int diceRoll = ThrowDice();
if (diceRoll == 7 || diceRoll == 11) {
    // Here ----^----------------^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...