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

为什么C语言中main函数需定义为int而非void?return 0有何作用?

关于C语言main函数返回值的疑问解答

先看你写的这个最简C程序:

int main(){
   return 0;
}

你猜的没错,return 0;确实和退出码有关——操作系统会通过这个值判断程序的执行状态:

  • 返回0表示程序正常执行完成
  • 返回非0值则通常用来标识不同的错误类型(比如文件打开失败可以返回1,参数错误返回2等)
    在命令行里,你可以通过echo $?(Linux/macOS)或者echo %errorlevel%(Windows)查看上一个程序的退出码。

为什么不能用void main()?

C语言的标准规范里明确要求main函数的返回类型必须是int。虽然有些编译器会把void main()当作非标准扩展允许编译,但这种写法不具备可移植性——换个编译器或者平台,可能直接编译报错,甚至运行时出现异常行为。

另外补充个小知识:从C99标准开始,如果你的int main()函数末尾没有写return语句,编译器会自动帮你补上return 0;,所以其实你完全可以不用手动写这行代码,一样符合标准。

为什么C语言不像其他语言那样用void main?

不同编程语言的设计定位不一样:
C是贴近系统底层的语言,需要直接和操作系统做交互,退出码就是程序向操作系统反馈执行结果的重要渠道。而有些高层语言把程序退出的细节封装起来了,不需要开发者手动控制返回值,所以设计成void main也没问题,但C保留了这种底层交互的灵活性,让开发者可以精准控制程序的退出状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:42:46