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

为何返回类型为int的main函数无return语句仍可正常运行?

为什么没有return语句的int型main函数仍能正常运行?

这其实是C语言标准里为main函数特意开的“绿灯”,分两种情况来解释:

  • C99及之后的标准(目前主流编译器都支持)
    当main函数执行到末尾的右大括号},却没遇到return语句时,编译器会自动帮你插入一句return 0;。这是标准明确规定的行为,所以你的代码能正常编译运行,还会给操作系统返回表示“执行成功”的退出状态码0。

    拿你给出的代码举例:

    #include <stdio.h>
    int main(void) {
        printf("Hello, World\n");
    }
    

    编译器会把它等价处理成:

    #include <stdio.h>
    int main(void) {
        printf("Hello, World\n");
        return 0;
    }
    
  • C89标准(旧标准)
    在C99之前的C89里,这个行为是未定义的——标准没要求编译器必须做什么。不过当时很多主流编译器(比如早期的GCC、Clang)会默认返回0,但这不是标准强制的,在一些特殊编译器或平台上可能出现奇怪结果(比如返回随机值)。

另外要注意:这个特殊规则只适用于main函数,其他返回非void类型的函数如果没写return语句,行为依然是未定义的,编译器可能报错或产生不可预测的结果,可别把这个习惯用到其他函数上哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:35:51