我非常精通 PHP,但我已经开始涉足 C。我看过代码
return 0;
在不返回值的函数的末尾。这在 PHP 中没有使用,因为如果函数没有返回值,则会自动返回值 NULL。
我要问的是,用简单的英语,return 0
实际做了什么?是否像 PHP 一样,将其参数作为函数调用的值返回?这只是好习惯吗?
我知道这个问题以前被问过很多次,但我是从 PHP 开发人员的角度来问的。谷歌抛出的答案并没有那么简洁。
是否像 php 一样,将其参数作为函数调用的值返回?这只是好习惯吗?
是的,PHP 和许多其他语言都从“C”中借用了return
关键字。并且在所有语言中,return
关键字具有相同的功能——从函数中返回。关键字后面的任何内容return
都是返回给调用者的值。
这是一个好习惯吗?是和否。并非所有函数都应该返回一个值。甚至在标准库中也有不少,不返回任何值。因此它们的返回类型是void
.
但是main
函数应该返回0
(also EXIT_SUCCESS
) 以识别程序已成功执行。否则 -1(也EXIT_FAILURE
)
编辑:(感谢@KeithThompson):
EXIT_FAILURE
是实现定义的。1
是一个共同的价值,EXIT_FAILURE
但重点是,你不必知道。
由于历史原因,可以编写return 0;
从已声明为的函数返回void
,如下所示:
void foo( /* arguments */ )
{
/* do things */
return 0;
}
这没有任何作用,并且0
(或您放在那里的任何东西)都被扔掉了。此外,如果你这样做,明智的编译器会给你一个警告信息。所以不要这样做。
如果没有定义其他返回类型,C 中的函数默认返回 int。如果调用者正在查看返回值,return 0 将是确保函数返回已知值而不是随机值的好习惯。
它实际上是返回一个 0 的整数。
C 编程语言允许程序退出或从主函数返回,通过返回整数或返回宏EXIT_SUCCESS
和EXIT_FAILURE
. 在 Unix 上,它们分别等于 0 和 1。AC 程序也可以使用exit()
指定整数状态或退出宏的函数作为第一个参数。
除了宏EXIT_SUCCESS
和之外EXIT_FAILURE
,C 标准没有定义返回码的含义。返回码的使用规则因平台而异。
在 C 中,只有在函数的开头声明一个带有 void 的函数时,才不必返回值。第一个例子:
#include <stdio.h>
int main()
{
printf("Hello World!");
return 0; // you have to use return because main starting with int
}
第二个例子:
#include <stdio.h>
void main()
{
printf("Hello World!");
//in this case return is useless, main is a void function
}