昨天看到一个c语言的一个函数,其中有if分支,其中一个分支结尾为return -1,另外一个分支结尾为return i。我在网上搜了一下,发现很多人回答return -1表示程序没有顺利执行(非正常退出),然后就有了以下两个疑问:
即使是非正常退出那也还是退出了啊,这和return 0 有什么区别吗?
能不能举个例子说下这种return -1的具体应用的场景啊,感觉不知道这个有什么用。。谢谢~
昨天看到一个c语言的一个函数,其中有if分支,其中一个分支结尾为return -1,另外一个分支结尾为return i。我在网上搜了一下,发现很多人回答return -1表示程序没有顺利执行(非正常退出),然后就有了以下两个疑问:
即使是非正常退出那也还是退出了啊,这和return 0 有什么区别吗?
能不能举个例子说下这种return -1的具体应用的场景啊,感觉不知道这个有什么用。。谢谢~
man函数
return -1 表示返回值是255啊。
(补充一点,对于linux来讲,返回值是个uint8类型的整数,范围是0-255。)
返回值不是0,就表示有问题。
这个是约定问题。
具体的哪个返回码对应哪种错误,可以看这里。
http://blog.chinaunix.net/uid...
自定义函数return 多少那就是程序自己的问题了。
函数返回值的取用是根据具体情况确定的,返回任何值都没什么问题,例如判断一个数的正负。
int type(int n){
return n > 0 ? 1:
n < 0 ? -1: 0;
}
因为很多时候一个函数返回值并不是简单的true false,而是i这样的有意义的值或者有错误码,因为负数本身就有negative的性质,所以往往用来表示错误码。这样函数约定返回0或非负数表示成功,很多系统API(Win32、POSIX)都是这样设计的。-1往往代表程序员偷懒没有指定错误码,或者没有合适的错误码。
另外其实由于很多系统对于进程退出的返回码约定是一个非负数,所以main函数最好返回正数表示错误值。比如一般有个宏EXIT_FAILURE是1。