是关于C语言中“return 0"的问题
main的返回值是返回给操作系统的,习惯上把程序正常结束的返回值指定为0(仅仅是习惯,开发者可以指定任何值)而异常结束则返回其他的值,在操作系统下可以访问相关环境变量取得程序的返回值来确定发生了什么情况(windows下该环境变量的名友颤称是 "ERRORLEVEL" )
比如可用 echo %ERRORLEVEL% 命令来显示最后一条命令的返回值
举个例子
打开cmd窗口
执行 dir 命令
再执行 echo %errorlevel% 会显示0,说明上一个dir正常结束
再执行dir胡乱加个不好芹败存在的参数
再执首敏行 echo %errorlevel% 会显示1 说明上一个dir发生了异常,返回1的含义就看开发者的意图了,对于windows这样的大型商业软件可以查命令手册获得返回含义,这里的1就是参数不正确的意思
再胡乱执行一个不存在的命令
再执行 echo %errorlevel% 会显示9009,说明最后一条命令发生9009异常:不存在的命令文件,这是cmd shell返回的
如图:
总之,main的返回值就是给操作系统提供情况的(因为main是被操作系统调用的),和局部函数一样,返回值是提供给调用它的函数的
main 中退出前的 return 一般默认 0 为程序正常退出。
所以在程序正常运行结束退出时用 return 0.
如果你的程序是非正常退出,当然可以 return 其他数值,没有说任何情况下都要 return 友弊物0啊。
例如你的程序到最后求一个数值 a ,期待它应该是 100 的时候卜闭正好液常退出,就可以这样:
int main() {
int a;
// 前面一些其他运行
// ....
// 到最后
if (a == 100) {
return 0;
} else {
return -1;
}
}
还有就是能否逆过来把return的值设置成整数1,当执行main函数过程中出现异常错误时函数值就变为一个为0 的整数?
可以,其实随便你 return 。问题你要知道的是,一般这个返回值不是你自己使用的,而是你编写好程序,使用你的程序的人如果确实有需要的时候使用的。当你标新立异非主流超常规的时候,你要考虑到你的程序的使用者的心情。:)
如果你的程序正常返回非零值,别人还遵守这个规则来调用你的程序锋誉粗的话,就可能误判银镇了。