随机数生成器为c++弹出一个错误

Random number generator for C++ popping up with an error?

本文关键字:一个 错误 c++ 随机数生成器      更新时间:2023-10-16

我的数字生成器有问题。语法方面,一切都工作正常。我主要是想用函数看看它们是否能正常工作。当我运行程序时,弹出一条消息,说我的变量"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;

}

这是因为您没有初始化guess,正如警告所说。

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

:

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

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

初始化变量并在流操作中设置错误检查

此外,该count++显然应该是循环体中的,否则您的循环通常需要重构,因为它从0 < 0的情况开始。

相关文章: