C++文件输出奇怪的数字,并且部分代码没有运行



是的。所以,我正试图制作一个猜谜游戏的代码。在这个游戏中,有一个硬模式。在硬模式下,您有15个猜测,并且必须在1到500之间进行猜测。但我的问题是:我正在尝试使用硬模式保存&显示你的输赢,但当它输出wins.txt的内容时,它会输出这样的内容:

Wins: 0x7fffee26df78
Losses: 0x7fffee26e178

这真的让我很困惑。下面是我的代码部分:

ifstream losses_var("losses.txt");
ifstream wins_var("wins.txt");
losses_var>> loss;
wins_var>> win;
wins_var.close();
losses_var.close();

然后它被调用:

cout<<"Wins: "<< wins <<"nLosses: "<< losses <<"n"

如果您想查看完整的源代码,请点击此处:http://pastebin.com/gPT37uBJ

我的第二个问题:获胜时不会显示硬模式。这几乎就是问题的全部。在我的代码中,请求用户输入的循环使用while(猜测!=randNum)因此,在最后一个括号中,我有我希望代码在用户获胜时显示的内容,但它没有运行。它只是停止。如果有人能帮我,我会很高兴的。出现错误的行是第97行到第105行。同样,源代码在这里:http://pastebin.com/gPT37uBJ

您的变量名混淆了

cout<<"Wins: "<< wins <<"nLosses: "<< losses <<"n";

应该是

cout<<"Wins: "<< win <<"nLosses: "<< loss <<"n";

选择好的变量名很重要。其中一个原因是,你不会混淆变量的含义(如果你混淆了自己,想想其他人会怎么看你的代码)。

其他人已经回答了输出问题(winwins)。另一个问题可能是while循环嵌套的逻辑。外循环(while (guess != randNum))开始,但其主体包含整个内循环(while (guesses_left != 0))。这意味着在内部循环终止之前不会再次检查外部条件,这意味着您已经用完了猜测。还要注意,如果猜测正确,内部循环将永远不会终止。你可能想要这样的东西:

while (guesses_left > 0) {
// input user's guess
if (guess < randNum) {
// process it
} else if (guess > randNum) {
// process it
} else {
// it's equal, user won
// do what's necessary for a win
return 0;
}
}
// ran out of guesses
// do what's necessary for a loss
return 0;

您没有将变量winloss写入cout。从粘贴的代码中,我可以看到winslosses是流对象,这意味着您可能看到了其中的地址。我建议您选择信息更丰富的变量名,以避免出现这样难以发现的错误。

相关内容

  • 没有找到相关文章

最新更新