在C语言中,主函数是不是必须要有返回值?

如题所述

在C语言中,主函数必须要有返回值

main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出。

在C语言标准中强制要求main函数的返回值类型为int,main函数的返回值是传递给操作系统,让操作系统判断程序的执行情况(是正常结束还是出现异常)。

扩展资料:

在C和C++中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。正是因为这个,所以很多人都误认为如果不需要程序返回值时可以把main函数定义成void main(void) 或void main()。然而这是错误的。

main函数的返回值应该定义为int类型,虽然在一些编译器中,void main可以通过编译(如vc6),但并非所有编译器都支持void main,因为标准中从来没有定义过void main。g++3.2、dev C等环境中如果main函数的返回值不是int类型,根本无法通过编译。而gcc3.2则会发出警告。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
按标准来说,C的main函数是需要有返回值的。标准中main函数返回类型是int的,所以需要一个返回值
但是由于历史原因,很多地方可以看到没有返回值的main。比如直接main()或者说void main() 但是这样一般编译器也不会认为错误
不过建议还是写标准的C的main函数。最好有一个返回值。0表示正常退出

打字不易 谢谢采纳追问

当写成main或void main ()这样,一般编译器也会自己加上去返回值?

追答

void main的话是直接认为是无返回值的,不会
直接main的话会认为是很老的代码。在很老的代码中,没有标明类型的话会认为是int类型的。

而且 如果是有返回值的main但是忘记return了 一些编译器会产生警告但是也不报错。有些编译器会把最后一句执行的语句作为返回值。

追问

如果写成void main()的形式,那么就查询不到程序的返回值了,是吗?

追答

可以这么认为吧。看编译器了。但是系统也会捕捉一些信号的。
一般来说(这只说一般情况。特殊的情况没研究过) main的返回值就是为了告诉系统,这个进程是否正常退出。

本回答被提问者采纳
第2个回答  2013-12-29
不是所有的都需要返还值