首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++,在代码差异时执行

C++,在代码差异时执行
EN

Stack Overflow用户
提问于 2017-03-02 19:17:10
回答 4查看 106关注 0票数 0

我刚刚开始学习C++,我有一个关于两种代码之间的区别的基本问题。这就是它在教学视频中的表现方式:

代码语言:javascript
运行
复制
int main()
{
   bool bPlayAgain = false:
   do {
       PrintIntro();
       PlayGame();
       bPlayAgain = AsktoPlayAgain();
   }
   while(bPlayAgain);
   return 0;
}

我的问题是,我在以下方面取得了同样的成果:

代码语言:javascript
运行
复制
int main()
{
    PrintIntro();
    do { 
       PlayGame(); 
    }
    while (AskToPlayAgain() == 1);
    return 0;
}

当玩家输入“是”时,双方都会重新启动游戏,如果他想再玩一次,或者如果输入了其他内容,就会停止游戏。在使用第二种药物时是否有不想要的副作用?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-02 19:23:59

第二个版本不会在每个循环上打印Intro。除此之外,调用AsktoPlayAgain()作为while参数没有副作用。

我想补充的是,版本1有一个额外的好处,您可以在询问后,但在重放之前做一些事情。例如:

代码语言:javascript
运行
复制
int main()
{
   bool bPlayAgain = false:
   do {
       PrintIntro();
       PlayGame();
       bPlayAgain = AsktoPlayAgain();
       if(bPlayAgain){
         ShowReload();
       }
   }
   while(bPlayAgain);
   return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2017-03-02 19:20:11

我看到的唯一副作用是,在第二个代码段中,PrintIntro()函数只会被调用一次。它不会被称为每次用户决定再次播放。

票数 6
EN

Stack Overflow用户

发布于 2017-03-02 19:21:45

这两种方法在功能上有两个不同之处:

  1. 在第二个版本中,PrintIntro()只会被调用一次,而不是每次游戏之前。
  2. AsktoPlayAgain可以在第一个值中返回任何非零值,但只能在第二个值中返回1。(如果AsktoPlayAgain只返回0或1,这一点根本没有区别。)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42564067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档