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

为何C语言无return语句的int main函数返回值为20?

为什么未显式返回值的main函数会返回20?

1. C标准对main返回值的不同规定

  • 在C99及之后的标准中,如果main函数没有写return语句,编译器会自动在函数末尾插入return 0;,此时程序返回值为0,表示执行正常。
  • 但在更早的C89标准里,main函数未显式指定返回值时,返回值属于未定义行为——具体返回什么值,取决于编译器的实现逻辑和程序执行后的内存状态。

2. 你的代码返回20的具体原因

你的编译器(大概率是MSVC这类遵循旧标准或兼容模式的编译器)在处理无显式返回的main函数时,会把函数内最后执行的表达式的结果作为返回值。

  • 你代码的最后一行是printf("Sum of numbers is %d",a+b);,而printf函数的返回值是成功输出的字符总数。
  • 当你输入23和62时,输出的字符串是Sum of numbers is 85,数一下字符数:一共是20个(包括空格和数字),所以printf返回20,这个值就被当作了main函数的返回值。

3. 添加return 0;后的变化

显式写入return 0;后,main函数会明确返回0,这是C程序中约定俗成的表示“程序正常执行完毕”的返回值,和编译器的标准兼容模式无关。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:22:39