首页 > 解决方案 > Visual Studio 如何从代码中读取指令?

问题描述

你好 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;
}

标签: visual-c++

解决方案


一条建议:当你运行代码时,请放置断点,特别是如果你想知道你的代码是如何运行的。

“它在替代尝试中正常工作。但是,如果我要删除 'GetGuess();' 在第 38 行。一切正常。但是,第 38 行的 Getguess 不是必需的,这让我很困扰,因为我现在的想法是它必须先处理 Getguess,然后再处理回馈猜测。

要回答您的问题,首先您必须知道,当您调用“string guess = GetGuess();”时 编译器已经检索了返回值并将其存储到“guess”中(在这种情况下,函数返回guess),因此您不必再添加 GetGuess() (这是多余的)。您认为编译器需要“首先处理 Getguess”是不正确的,因为“string guess = GetGuess();” 已经在处理/检索返回值。

另外,我认为在 int main() 之前初始化和声明所有函数是一个好习惯,但是这取决于你如何组织所有代码函数。


推荐阅读