为什么我们需要在C ++中使用int main
而不是void main
?
答案 0 :(得分:30)
简短的回答是因为C ++标准要求main()
返回int
。
正如您可能知道的那样,main()
函数的返回值被运行时库用作进程的退出代码。 Unix和Win32都支持在进程完成后从进程返回的(小)整数的概念。从main()
返回值为程序员指定此值提供了一种方法。
答案 1 :(得分:15)
如果应用程序成功与否,大多数操作系统会向用户或调用进程报告。这在脚本编写时尤其有用,脚本可以在程序结果上有条件地分支(if-then)。有点像:
// pseudo-code
screenscrape http://mydatasource.com > results.txt
if errorlevel == 0 then
processfile results.txt
else
echo Screen Scraping Failed!
end if
此结果状态通过main的返回值完成。
虽然有些编译器允许void main,但为了一致性和简单性,ANSI标准需要一个main的原型:
int main(int argc, char *argv[]);
因为在C中,参数被调用者清理,所以main的作者可以忽略声明或处理参数argc& argv的。但是,如果调用main的setup-routine期望一个int返回值,而不是找到一个,则行为可能是未定义的。
简短回答:
答案 2 :(得分:6)
更改
的主要原因void main(){}
到
int main(){}
在以后的版本中,通知错误在执行期间发生在操作系统上运行
return 0;
识别程序是否成功执行,如果有任何数字而不是0返回,则表示发生了一些错误,其中 错误代码 是由main返回的。 如果您正在运行 codeblock IDE ,请参阅构建日志中是否正常显示主要返回0
Process terminated with status 0
否则它会以红色显示状态代码,表示发生了错误
答案 3 :(得分:1)
来自维基百科:
从main函数返回的值成为进程的退出状态,尽管C标准仅将特定含义归为两个值:
EXIT_SUCCESS
(传统上为零)和EXIT_FAILURE
。其他可能的返回值的含义是实现定义的。
答案 4 :(得分:0)
与在C中一样,因为该过程将为操作系统提供退出代码。
您可以使用
int main (int argc, char ** argv)
{
return (0);
}
或
int main (int argc, char ** argv)
{
exit (0);
}
至少在C89 IIRC中。
答案 5 :(得分:0)
因为int是返回代码,程序可以返回操作系统。
您可以查询此值以检查操作是否已成功。
使用命令行脚本时,这非常有用。
答案 6 :(得分:0)
也许是因为使用main()
方法中的状态代码干净地退出是有意义的。在Java中,我们必须使用System.exit()
来模拟它,这并不是那么优雅。
答案 7 :(得分:0)
当我们执行程序检查它是否成功运行时。因此,当它返回0时,这意味着它是真的&成功运行,如果它返回1然后它没有成功运行&此int
值告诉操作系统程序是否成功运行