visual-c++ - 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;
}
解决方案
一条建议:当你运行代码时,请放置断点,特别是如果你想知道你的代码是如何运行的。
“它在替代尝试中正常工作。但是,如果我要删除 'GetGuess();' 在第 38 行。一切正常。但是,第 38 行的 Getguess 不是必需的,这让我很困扰,因为我现在的想法是它必须先处理 Getguess,然后再处理回馈猜测。
要回答您的问题,首先您必须知道,当您调用“string guess = GetGuess();”时 编译器已经检索了返回值并将其存储到“guess”中(在这种情况下,函数返回guess),因此您不必再添加 GetGuess() (这是多余的)。您认为编译器需要“首先处理 Getguess”是不正确的,因为“string guess = GetGuess();” 已经在处理/检索返回值。
另外,我认为在 int main() 之前初始化和声明所有函数是一个好习惯,但是这取决于你如何组织所有代码函数。
推荐阅读
- python - 如何替换多个熊猫列中列表中包含的值
- c++ - 如何在 C++ 中通过 http 发送大型视频文件?
- mysql - MySQL:在过程中动态创建游标
- python - 将多个变量传递给 PoolExecutor
- git - Git 状态和本地 repo 文件
- qt - 如何在 Qt 中将 form.ui 插入到 mainwindow.ui 中?
- python - 如何将数据从烧瓶前端发送到 python 后端,最终得到结果?
- css - 更改闪亮的 bsTooltip 框的颜色
- objective-c - 在“for循环”结束时触发事件
- c - 如何在处理c中长度较长的字符串的行中输入2个具有特定大小的字符串?