Как Visual Studio читает инструкции из кода? - PullRequest
0 голосов
/ 21 декабря 2018

Привет, сообщество StackOverflow.Я столкнулся с определенной проблемой в понимании того, как Visual Studio обрабатывает «инструкции», приведенные в коде.

код, который я написал, создавал мне проблему, когда я выполнял его.Прошло что-то вроде:

каково ваше предположение?осел

каково ваше предположение?осел

ваше предположение было: осел

каково ваше предположение?собака

каково ваше предположение?dog

Ваше предположение было: dog.

Правильно работает при альтернативных попытках.Тем не менее, если бы я должен был удалить 'GetGuess ();'на линии 38. все отлично работает.Тем не менее, меня просто беспокоит, что Getguess в строке 38 не требуется, потому что сейчас у меня возникает мысль о том, что он должен сначала обработать 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;
}

1 Ответ

0 голосов
/ 21 декабря 2018

Совет: когда вы запускаете код, пожалуйста, ставьте точки останова, особенно если вы хотите знать, как работает ваш код.

«Он работает правильно при альтернативных попытках. Однако, если бы я должен был удалить»GetGuess ();»в строке 38. все работает отлично. Однако меня беспокоит, что Getguess в строке 38 не требуется, потому что сейчас у меня возникает мысль, что он должен сначала обработать Getguess, прежде чем обрабатывать, выдавая предположение. "

Чтобы ответить на ваш вопрос, сначала вы должны знать, что когда вы вызываете "string guess = GetGuess ();"компилятор уже извлекает возвращаемое значение и сохраняет его в «предположении» (в данном случае функция возвращает предположение), поэтому вам больше не нужно добавлять GetGuess () (это избыточно).Ваше мнение о том, что компилятору необходимо «обработать Getguess first», неверно, поскольку «string guess = GetGuess ();»уже обрабатывает / получает возвращаемое значение.

Кроме того, я думаю, что хорошей практикой является инициализация и объявление всех функций перед int main (), но затем все зависит от того, как вы организуете все свои функции кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...