如果我不';t使用返回0;在C中

如果我不';t使用返回0;在C中,c,C,阅读所有这些来理解我的问题:在我的拼贴测试中,有一个问题是这样的: 此代码中的错误是什么: #包括 int main(){ printf(“你好世界”); } 以上代码的答案:编译错误 但这就是我实际尝试的结果: 根据书籍,我们必须返回0;当我们使用int main()时 任何人都能给出完美或可理解的解释 缺少return语句永远不会引发编译错误。特别是对于主函数,处理方式不同。如果它有类型int,但没有返回任何内容,则程序的行为类似于main返回0 理论上,它可能依赖于编译器,但在您的情况下

阅读所有这些来理解我的问题:在我的拼贴测试中,有一个问题是这样的:

此代码中的错误是什么:

#包括
int main(){
printf(“你好世界”);
}
以上代码的答案:编译错误

但这就是我实际尝试的结果:

根据书籍,我们必须返回0;当我们使用int main()时 任何人都能给出完美或可理解的解释


缺少return语句永远不会引发编译错误。特别是对于主函数,处理方式不同。如果它有类型
int
,但没有返回任何内容,则程序的行为类似于
main
返回
0

理论上,它可能依赖于编译器,但在您的情况下,它可能是测试中的错误。 您应该
返回0
,但不这样做不是编译错误



UPD:正如@EricPostpischil在评论中提到的,编译器不会引发错误,因为他们默认设置了一个允许编译非标准代码的模式,所以测试中的问题是不完整的。它必须指定您正在使用的编译器等。

main
是一种特殊情况,如果您不指定任何返回值,它将返回0。这不适用于任何其他方法。这是否回答了您的问题?是的,听起来你的大学考试错了-
intmain()
是一个特例。实际上,除了
main
之外,你必须为每个函数编写返回语句,并且返回类型为非无效。你的大学的分数不正确
main()
是唯一不需要显式返回值的非void函数。代码中的错误是函数定义。它应该是
intmain(void)
,但它不应该导致编译器错误@NisheetKumar yesRe“缺少return语句永远不会引起编译错误”:这不完全正确。首先,如果编译器在函数不返回值的情况下检测到函数的返回值被使用,它可以报告错误,因为C标准没有根据C 2018 6.9.1 12对这种情况下的行为提出任何要求。其次,在没有上述情况的情况下,符合C标准的编译器可能需要接受返回值不存在的程序。但是,编译器通常有一种将警告视为错误的模式。在这种模式下,编译器并不完全符合C标准,但它是优秀程序员常用的功能,应该作为一个选项提及。@EricPostChil谢谢您的回复,我编辑了我的答案