我在这个C ++代码中做错了什么?

时间:2014-04-13 03:18:39

标签: c++

#include <cstdlib>
#include <ctime>
#include <iostream>

int main()
{
    bool newgame;

    std::cout << " Ready to waste more family money gambling? y/n ";
    std::cin >> newgame;
    if (newgame = "n")
    {       
        newgame = false;
        return(123);
    }
    else if (newgame = "y")
    {
        srand(time(NULL));
        int number = rand() % 10;
        int guess;
        std::cout << "Pick your number ";
        std::cin >> guess;
        if (guess == number)
        {
           std::cout << "Winner!";
        }

        else
        {
           std::cout << "Loser!";
        }
    }
}

我不明白我在这里做错了什么,所有发生的事情都是在输入“y”或“n”后命令提示符关闭。 我已经尝试了所有的东西,从改变循环类型,甚至重新排列代码,但我尝试的一切都没有用。

3 个答案:

答案 0 :(得分:3)

bool只能保存值0或1(true或false)。尝试将newgame更改为char。此外,您还使用了分配(=)而不是相等(==)。

另外,如果您正在尝试循环(我认为您在问题中暗示了这一点),那么您希望在do...while循环中包装变量声明之外的所有内容。

答案 1 :(得分:3)

问题是==是等于的运算符,而不是=用于赋值的运算符。发生的事情就是这部分,

if (newgame = "n")

{       newgame = false;
        return(123);
}

正在执行和退出123.布尔人不存储&#34;是&#34;和&#34;不&#34;值,它们存储1表示true,0表示false表示。

答案 2 :(得分:1)

看起来不太近但我看到很多,如果blah =某事,我认为你有可能想使用==而不是=,=在if语句中做一个赋值==做一个比较