C语言中return 0 的真正含义
关于RETURN0是告诉编译器,程序正常结束,这个解释我也知道我想知道的是,既然写代码的人,知道程序正常结束,那么他为什么还要加上一句return0呢?程序是否正常结束跟...
关于RETURN 0是告诉编译器,程序正常结束,这个解释我也知道
我想知道的是,既然写代码的人,知道程序正常结束,那么他为什么还要加上一句return 0 呢?
程序是否正常结束跟程序的代码是否有误有关系,跟是否RETURN某个值无关。
或者说,这个仅仅是一个提示符号,告诉编译器,我的程序写完了,似乎这么解释比较合理。 展开
我想知道的是,既然写代码的人,知道程序正常结束,那么他为什么还要加上一句return 0 呢?
程序是否正常结束跟程序的代码是否有误有关系,跟是否RETURN某个值无关。
或者说,这个仅仅是一个提示符号,告诉编译器,我的程序写完了,似乎这么解释比较合理。 展开
6个回答
展开全部
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 。
展开全部
return 0是操作系统的默认约定。
比如你编译了两个程序a.exe和b.exe
然后在命令行(cmd)里运行a && b回车,那么如果a返回0,操作系统会继续运行b;如果a返回其他值,比如-1,操作系统就不会运行b了(这里和c语言刚好相反,c语言里面0表示false,&&后面的反而不执行)。
当然,如果你只是单个程序运行,返回什么都无所谓。
比如你编译了两个程序a.exe和b.exe
然后在命令行(cmd)里运行a && b回车,那么如果a返回0,操作系统会继续运行b;如果a返回其他值,比如-1,操作系统就不会运行b了(这里和c语言刚好相反,c语言里面0表示false,&&后面的反而不执行)。
当然,如果你只是单个程序运行,返回什么都无所谓。
追问
C语言都是以RETURN 0作为正确的
如果我在一个程序的结束的地方RETURN 0,这个代表程序正常结束的。
说明我预先知道了程序的会正常结束,是不是说,在程序出错的地方会返回一个1 2 3 之类的代表错误的值呢?
追答
没错,main函数(注意只针对main函数)return 0表示告诉调用者程序运行正常。
如果程序出错而无法继续运行,那么main函数应该返回个非0值,目的是告诉调用者(一般是操作系统)程序出错了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在tc中,是不需要的
这个在vc中,好像是必须的
我也不是很理解,好像是vc框架必须的代码
你可以这么理解,c是有很多的函数互相包含调用构成的,main也是一个函数
c中,是函数就必须有返回值,这个是定下的
有返回类型的,就是返回类型和程序运算返回结果
void其实也有返回值,他好像是调用成功返回非零值,失败返回零
main也是函数,那么他也有返回值,不过我们一般用不到,我们一般也不在意这个返回值,是给系统判断用的
这个在vc中,好像是必须的
我也不是很理解,好像是vc框架必须的代码
你可以这么理解,c是有很多的函数互相包含调用构成的,main也是一个函数
c中,是函数就必须有返回值,这个是定下的
有返回类型的,就是返回类型和程序运算返回结果
void其实也有返回值,他好像是调用成功返回非零值,失败返回零
main也是函数,那么他也有返回值,不过我们一般用不到,我们一般也不在意这个返回值,是给系统判断用的
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得你的理解有点偏了。return 多少代表什么含义,是人为定的。
至于为什么需要return一个数,看你函数定义的。
例如:你定义int main()主函数,那你肯定要return一个int型啊,至于return零是正常结束还是return负一是正常结束,随你定义啊。
你定义void main(),你不就不需要return咯。
至于为什么需要return一个数,看你函数定义的。
例如:你定义int main()主函数,那你肯定要return一个int型啊,至于return零是正常结束还是return负一是正常结束,随你定义啊。
你定义void main(),你不就不需要return咯。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
return 0这个就是函数的返回类型,你不要纠结return 0; 它只不过是大家默认的写法。你也可以返回其它的数也行。只要是在int范围内就有效。
当然你也可以不使用return 0; 其做法就是把函数类型改为void即可。
当然你也可以不使用return 0; 其做法就是把函数类型改为void即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询