所以我对C ++完全不熟悉,但已经了解了很多关于Java的知识。
我目前正在观看新星的教程,他说如果你返回0,计算机就会知道程序是否成功。
嗯,我现在的问题是:这会影响功能吗?如果我想要返回一个计算出来的数字并且令人惊讶地为0,那么我是否会返回0或该功能是否会发回任何内容?
答案 0 :(得分:8)
您返回0,计算机知道程序成功运行。
这是主要功能。任何其他功能都可以返回任何他们想要的Main是特别的,它是您的程序的入口点,也是出口点。当你的程序启动main时,只有在main返回时它才会被调用。观察主函数的返回代码是我认为这些日子已经不合时宜的做法,但是当发生错误时你仍然会看到很多代码返回-1之类的东西。谁在看那个错误代码?操作系统大部分时间。
答案 1 :(得分:5)
返回零是一种惯例,尤其是在Unix世界中。如果程序(所以它的main()函数)返回零,则表示它成功完成。其他值(但不一定必然)表示错误。您可以查看sysexits.h
以获取常见返回代码列表。
另外,如果你错过了return语句,main()仍将(隐式)返回零(对C ++有效)。它在C++ standard,3.6.1第5点中定义:
如果控制到达main的末尾而没有遇到返回 声明,效果是执行返回0;
在shell中,例如Bash,您可以通过查看$?
变量来查看从main()返回的值,例如:
$ g++ prog.cpp
$ ./a.out
$ echo $?
0
对于除main()以外的函数,你应该记住,相比之下,零是一个布尔值false,因此返回零可能不会被解释为成功(或为真)。但返回值可以是任何东西,一般来说,它没有任何特殊含义,所以返回零是可以的。
答案 2 :(得分:4)
main
函数中返回0是唯一具有任何特殊含义的函数。通常情况下操作系统可以理解程序是成功的,就C ++内部本身而言,它并不是特别有趣。