【问题标题】:Random number generator for C++ popping up with an error?C++ 的随机数生成器弹出错误?
【发布时间】:2015-07-26 16:48:56
【问题描述】:

我的号码生成器有问题。语法明智,一切正常。我主要想用函数来看看它们是否能正常工作。当我运行程序时,会弹出一条消息,说我的变量“guess”没有初始化。任何人都可以提供有关为什么会发生这种情况的见解吗? 另请注意,即使我没有在下面的代码中包含我的库,它们也存在于实际程序本身中。

using namespace std;

int game();
string playAgain();

int main(){

game();
playAgain();

return 0;
}

int game(){

int guess;
int guessesTaken = 0;
int number = rand() % 10 + 1;
int count = 0;

cout << "I am thinking of a number between 1 and 10, can you guess it? " << endl;

while (guessesTaken < count){
    cout << "Take a guess: " << endl;
    cin >> guess;
    if (guess > number)
        cout << "Too High. Try again!" << endl;
    if (guess < number)
        cout << "Too Low! Try again!" << endl;
    if (guess == number)
        break;

}count++;

if (guess == number)
    cout << "Congratulations!" << endl;
return 0;
}

string playAgain(){
string play;

cout << "Want to play again?: " << endl;
if (play == "y" || "Y")
    main();
else
    cout << "Thanks for playin" << endl;
return 0;

}

【问题讨论】:

  • 不管你的问题}count++;肯定是错的

标签: c++ random


【解决方案1】:

发生这种情况是因为您没有像警告所说的那样初始化 guess

当然,如果您假设 cin &gt;&gt; guess 操作将始终成功,那么初始化将在很大程度上变得无关紧要,因为变量将采用确定性值。

但是

  1. 编译器在警告您时并不知道这一点,并且
  2. 您的cin &gt;&gt; guess 操作没有错误检查;你不仅不能假设它总是会成功,而且你的程序也不知道它是否真的成功了

此外,如果您的其他变量具有正确的值,则可能根本不会执行整个循环,因此编译器的观察完全正确。

初始化您的变量并围绕您的流操作进行错误检查。

此外,count++ 显然应该是 in 循环体,否则您的循环通常需要重构,因为它以 0 &lt; 0 的情况开始。您应该认真考虑您希望程序的语义是什么。

【讨论】:

    猜你喜欢
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多