其实没什么区别。
void main() 这么定义只是说明main函数没有返回值
int main(void)和int main()是一样的,括号里没有东西就相当于void,只是说明main函数有一个int类型的返回值
C语言的规范里面要求main函数需要返回一个int类型的返回值来告诉操作系统这个程序是执行正确还是执行错误。执行正确返回0,执行错误返回非0。但是目前操作系统都不去判断这个返回值,所以你写成void main()还是int main()其实是一样的,没有什么区别。不过既然有规范,还是推荐写成int main()这种形式。
对于C和C++来说还有一点区别。C++加强了C的一些检查,我们知道C语言是弱类型的语言,编译检查没有那么严格。C++其实也是弱类型的语言(相对于java、c#这些高级语言),但是比C的检查稍微严格了一些。
如果我这么写
void main()
{
return 0;
}
声明的main函数没有返回值,但是代码里面我强制return 0,这个在C语言里面只会触发一个告警,但是在C++里面就是编译错误,检查严格了一下。
int main()
{
return;
}
这么写一样,声明需要返回一个int类型,但是代码里面不返回的话,C语言编译器不会报错但是C++就会报错。
追问返回值只要不是0,就一定执行错误么
追答C语言是这么规范的而已,返回0代表执行正确,返回非0代表执行错误。
规范都是人定的,后面不是也说了嘛。现在的操作系统没人去判断这个,所以返回什么都无所谓了。
追问恩,