You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++代码中第一个if分支需加return 0,第二个为何无需?

问题分析:C++条件分支的执行逻辑差异

代码示例

#include <iostream>
#include <string>

int main() {
    std::string question;

    std::getline(std::cin, question);
    
    if (question == "yes") {
        std::cout << "Let's rock and roll!" << std::endl;
        return 0; // 该行
    } if (question == "no") {
        std::cout << "Too bad then..." << std::endl;   
    } else {
        std::cout << "What do you mean by that?" << std::endl;
    }
    return 0;
}

问题描述

删除第一个if (question == "yes")分支中的return 0语句后,输入"yes"时会依次输出"Let's rock and roll!"和"What do you mean by that?",不符合预期;但if (question == "no")分支无需添加return 0,输入"no"时仅输出"Too bad then...",符合预期。请问为何第一个分支需要return 0,第二个却不需要?


解答

这是因为代码里的两个条件分支结构完全不同:

  • 第一个if (question == "yes")是独立的单分支,它和后面的if-else没有任何关联。当输入"yes"时,执行完该分支的输出后,如果没有return 0,程序会继续向下执行后续代码——此时question是"yes",不满足if (question == "no")的条件,就会进入else分支执行输出,最终出现两次打印的情况。

  • 第二个if (question == "no")和紧随其后的else是绑定的一组分支结构。当输入"no"时,执行完该分支的输出后,程序会直接跳过else分支,走到最后的return 0,不会触发额外的输出,自然不需要用return 0来提前终止程序。

简单总结:第一个if是孤立的,不提前退出就会继续走后面的代码;第二个if和else是成对的,执行完if就不会碰else,所以不需要额外终止。


内容的提问来源于stack exchange,提问作者TheEndIsRelaxing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:15:33