C语言中return 0 的真正含义
答案:5 悬赏:30
解决时间 2021-03-25 13:57
- 提问者网友:活着好累
- 2021-03-25 10:37
C语言中return 0 的真正含义
最佳答案
- 二级知识专家网友:风格不统一
- 2021-03-25 11:52
main 主函数的 return 值,并不是告诉编译器的,而是返回到运行这个程序的系统的。
命令解释器(例如dos的command,linux 的各种 Shell)接收这个值,可以用于不同程序之间的交互。例如批处理程序(又或者另外一个程序通过管道什么的)要连续执行多个程序,如果后一个程序是否执行依赖于前一个程序是否执行成功的时候,就要知道前一个程序的运行状态。
具体举例,你要写一个安装程序安装你的某个程序,但这个程序运行或者安装依赖于另外一个程序是否安装成功了(很常见吧,象现在很多程序要求你安装了dotnet xxx版本后才能运行之类)。你自己封装的安装程序启动后先检查依赖环境是否安装了,没有,调动依赖环境的安装程序,这时候要检查这个安装程序是否正常安装完成正常退出,就要检查这个返回值了。如果返回安装失败,就不再执行后面的程序。成功了,继续安装你的程序。
至于返回什么这是写代码的人自己决定的,就算你喜欢返回0xAA55代表正常退出也行。只是一贯以来,大家都接受 main return 0表示成功,因为返回非0值可以用不同的值分别表示不同的错误原因。什么内存不足,文件校验错之类的可以分别定义不同的值,带回更多信息。而系统自己也会将0作为正常。没错,系统也会接收程序的return 值的,windows7就经常在安装某个文件异常退出时冒个提示什么这程序好像没有正常安装之类的信息。
就算你强行写 void main() 然后不return ,其实也是有个默认值返回了出来。就算你不在乎这个值,还是 int main 然后 return 个0 这样的行为比较标准。一些严格的编译器,是不接受 void main 的。例如 xcode 。
命令解释器(例如dos的command,linux 的各种 Shell)接收这个值,可以用于不同程序之间的交互。例如批处理程序(又或者另外一个程序通过管道什么的)要连续执行多个程序,如果后一个程序是否执行依赖于前一个程序是否执行成功的时候,就要知道前一个程序的运行状态。
具体举例,你要写一个安装程序安装你的某个程序,但这个程序运行或者安装依赖于另外一个程序是否安装成功了(很常见吧,象现在很多程序要求你安装了dotnet xxx版本后才能运行之类)。你自己封装的安装程序启动后先检查依赖环境是否安装了,没有,调动依赖环境的安装程序,这时候要检查这个安装程序是否正常安装完成正常退出,就要检查这个返回值了。如果返回安装失败,就不再执行后面的程序。成功了,继续安装你的程序。
至于返回什么这是写代码的人自己决定的,就算你喜欢返回0xAA55代表正常退出也行。只是一贯以来,大家都接受 main return 0表示成功,因为返回非0值可以用不同的值分别表示不同的错误原因。什么内存不足,文件校验错之类的可以分别定义不同的值,带回更多信息。而系统自己也会将0作为正常。没错,系统也会接收程序的return 值的,windows7就经常在安装某个文件异常退出时冒个提示什么这程序好像没有正常安装之类的信息。
就算你强行写 void main() 然后不return ,其实也是有个默认值返回了出来。就算你不在乎这个值,还是 int main 然后 return 个0 这样的行为比较标准。一些严格的编译器,是不接受 void main 的。例如 xcode 。
全部回答
- 1楼网友:何以畏孤独
- 2021-03-25 16:07
return 0 表示操作成功,正常结束
return -1 表示操作失败,出现异常
return -1 表示操作失败,出现异常
- 2楼网友:狂恋
- 2021-03-25 15:15
return 0这个就是函数的返回类型,你不要纠结return 0; 它只不过是大家默认的写法。你也可以返回其它的数也行。只要是在int范围内就有效。
当然你也可以不使用return 0; 其做法就是把函数类型改为void即可。
当然你也可以不使用return 0; 其做法就是把函数类型改为void即可。
- 3楼网友:孤老序
- 2021-03-25 13:49
我觉得你的理解有点偏了。return 多少代表什么含义,是人为定的。
至于为什么需要return一个数,看你函数定义的。
例如:你定义int main()主函数,那你肯定要return一个int型啊,至于return零是正常结束还是return负一是正常结束,随你定义啊。
你定义void main(),你不就不需要return咯。
至于为什么需要return一个数,看你函数定义的。
例如:你定义int main()主函数,那你肯定要return一个int型啊,至于return零是正常结束还是return负一是正常结束,随你定义啊。
你定义void main(),你不就不需要return咯。
- 4楼网友:洎扰庸人
- 2021-03-25 12:52
return 0是操作系统的默认约定。
比如你编译了两个程序a.exe和b.exe
然后在命令行(cmd)里运行a && b回车,那么如果a返回0,操作系统会继续运行b;如果a返回其他值,比如-1,操作系统就不会运行b了(这里和c语言刚好相反,c语言里面0表示false,&&后面的反而不执行)。
当然,如果你只是单个程序运行,返回什么都无所谓。
追问:C语言都是以RETURN 0作为正确的
如果我在一个程序的结束的地方RETURN 0,这个代表程序正常结束的。
说明我预先知道了程序的会正常结束,是不是说,在程序出错的地方会返回一个123 之类的代表错误的值呢?
追答:没错,main函数(注意只针对main函数)return 0表示告诉调用者程序运行正常。
如果程序出错而无法继续运行,那么main函数应该返回个非0值,目的是告诉调用者(一般是操作系统)程序出错了。
比如你编译了两个程序a.exe和b.exe
然后在命令行(cmd)里运行a && b回车,那么如果a返回0,操作系统会继续运行b;如果a返回其他值,比如-1,操作系统就不会运行b了(这里和c语言刚好相反,c语言里面0表示false,&&后面的反而不执行)。
当然,如果你只是单个程序运行,返回什么都无所谓。
追问:C语言都是以RETURN 0作为正确的
如果我在一个程序的结束的地方RETURN 0,这个代表程序正常结束的。
说明我预先知道了程序的会正常结束,是不是说,在程序出错的地方会返回一个123 之类的代表错误的值呢?
追答:没错,main函数(注意只针对main函数)return 0表示告诉调用者程序运行正常。
如果程序出错而无法继续运行,那么main函数应该返回个非0值,目的是告诉调用者(一般是操作系统)程序出错了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯