您好,这里有StackOverflow社区。在理解Visual Studio如何处理代码给出的“指令”时,我遇到了一个问题。
我编写的代码在运行时给我一个问题。 像这样:
您的猜测是什么? 驴
您的猜测是什么? 驴
您的猜测是:驴
您的猜测是什么? 狗
您的猜测是什么? 狗
您的猜测是:狗。
它可以在其他尝试中正常工作。 但是,如果我要删除“ GetGuess();”,在第38行。一切正常。 但是,令我烦恼的是,第38行上的Getguess不是必需的,因为我现在想到的是它必须先处理Getguess,然后再处理给出的猜测。
谢谢
代码:
#include <iostream>;
#include <string>;
using namespace std;
void PrintIntro();
void play_game();
string GetGuess();
// entry point for out application
int main()
{
PrintIntro();
play_game();
}
//intro game
void PrintIntro()
{
constexpr int WORD_LENGTH = 5;
cout << "welcome to bulls and cows\n";
cout << "can you guess the " << WORD_LENGTH << " letters word?\n";
return ;
}
void play_game()
{
// loop for number of turns asking for guesses
constexpr int number_of_turn = 5;
for (int count = 1; count <= number_of_turn; count++)
{
GetGuess();
string guess = GetGuess();
cout << "your guess was:" << guess << endl;
}
}
//gut guess from player
string GetGuess()
{
// ask for a guess
cout << "whats your guess?\n";
string guess = "";
getline(cin, guess);
return guess;
}
答案 0 :(得分:0)
一条建议:运行代码时,请设置断点,特别是如果您想知道代码的运行方式。
“它在替代尝试中正常工作。但是,如果我要删除'GetGuess();',在第38行上,一切工作都很好。但是,令我烦恼的是第38行上的Getguess不是必需的,因为我现在的想法是必须先处理Getguess,然后再处理猜测。” >
要回答您的问题,首先您必须知道,当您调用“字符串猜测= GetGuess();”时编译器已经获取了返回值并将其存储到“ guess”(在这种情况下,该函数返回guess),因此您不必再添加GetGuess()了(这是多余的)。您认为编译器需要“首先处理Getguess”是不正确的,因为“字符串猜测= GetGuess();”已经在处理/获取返回值。
此外,我认为在int main()之前初始化和声明所有函数是一个好习惯,但是,这取决于组织所有代码函数的方式。