为什么我写return -1编译运行也没问题?
c语言吧
全部回复
仅看楼主
level 1
如题。一般说int main()配return 0,表示返回值为0,即成功,不成功的话return -1。我故意把0改成了-1,结果编译和运行都正常,这是为什么?
2022年07月13日 15点07分 1
吧务
level 14
返回值是给调用这个程序的程序看的,方便了解程序是否执行成功
2022年07月13日 15点07分 3
那也就是说,我程序运行成功后,按照我写的这个写法,应该返回-1,如果不正常,返回的不是-1,我这个说法对吗?
2022年07月16日 11点07分
@后后现代人 如果返回-1,运行者(比如操作系统、终端之类的)会认为程序出错了。至于出错以后干什么,那看你环境了。
2022年07月16日 13点07分
@fx2422esplus 应该是我写return 0;返回-1是认为出错了,但是我写return -1;,那返回-1就是正常的了,我也试过了,没有报错
2022年07月16日 13点07分
@后后现代人 那可能只是你用的这个环境不使用这个返回值,无论什么样的退出都当做正常退出。你写retuen -1就是在告诉系统这个程序出错了,那么无论实际上出没出错系统都会认为出错了,至于理不理这个错误,那就是另一回事了。
2022年07月16日 13点07分
level 1
返回0表示程序正常退出,返回非0值表示程序异常退出。当程序运行时引发异常而无法处理该异常时,操作系统会强行终止程序执行,并返回一个非0的异常代码
2022年07月13日 16点07分 4
@后后现代人 正常和异常无非是人为约定的。。。
2022年07月14日 00点07分
@后后现代人 你返回一句ImSaBi也是可以的[捂嘴笑][捂嘴笑][捂嘴笑]
2022年07月14日 14点07分
那我写return -1是不是相当于异常退出了?
2022年07月13日 22点07分
level 9
没啥问题[阴险]
2022年07月14日 01点07分 5
level 8
你去学学 Linux shell 编程就知道为什么程序最后要返回一个值了,这个值一般用在 shell 脚本里的条件表达式里,来决定后续处理。
2022年07月14日 02点07分 6
level 6
他要的只是一个int类型的返回值啊,-1也是int当然不会报错,除非你写其他异常处理的语句
2022年07月14日 02点07分 7
我试了,返回float类型的也没问题
2022年07月16日 11点07分
@后后现代人 因为会强制的隐式的转换
2022年07月16日 12点07分
@后后现代人 会给你强制转换成int的。如果你main前面写的是float然后return的是int类型也会帮你强制转化成float,但是有的编译器写float main()会报错。
2022年07月16日 12点07分
@东方树叶真难喝 谢谢!又让我明白了一个细节
2022年07月16日 13点07分
level 11
就一用来当状态码的,返回什么数可以自己定,嵌套最简单的办法是放if[汗]
2022年07月14日 02点07分 8
level 6
你爱返回啥返回啥,反正主线程返回了程序就结束了,至于返回的什么与你无关,只与调用他的程序和调试器有关
2022年07月14日 03点07分 11
level 11
3楼正解
2022年07月14日 04点07分 12
level 12
欢迎进来一起学习交流讨论问题
2022年07月14日 06点07分 13
level 12
好古老的IDE
2022年07月14日 06点07分 15
level 1
C语言可以和操作系统原理一起学
2022年07月14日 09点07分 16
level 1
然而 return x是给自己的其他组件,调用的时候进行判断的。
2022年07月14日 09点07分 17
level 5
我一直纳闷,这个主函数的return他return哪里去了,return给系统了吗?
2022年07月14日 09点07分 18
[捂嘴笑]
2022年07月14日 11点07分
命令行里能看到返回值的
2022年07月14日 12点07分
是的
2022年07月14日 14点07分
@晴空supreme 怎么看呀
2022年07月14日 20点07分
1 2 3 尾页