18

我非常精通 PHP,但我已经开始涉足 C。我看过代码

return 0;

在不返回值的函数的末尾。这在 PHP 中没有使用,因为如果函数没有返回值,则会自动返回值 NULL。

我要问的是,用简单的英语,return 0实际做了什么?是否像 PHP 一样,将其参数作为函数调用的值返回?这只是好习惯吗?

我知道这个问题以前被问过很多次,但我是从 PHP 开发人员的角度来问的。谷歌抛出的答案并没有那么简洁。

4

6 回答 6

20

是否像 php 一样,将其参数作为函数调用的值返回?这只是好习惯吗?

是的,PHP 和许多其他语言都从“C”中借用了return关键字。并且在所有语言中,return关键字具有相同的功能——从函数中返回。关键字后面的任何内容return都是返回给调用者的值。

这是一个好习惯吗?是和否。并非所有函数都应该返回一个值。甚至在标准库中也有不少,不返回任何值。因此它们的返回类型是void.

但是main函数应该返回0(also EXIT_SUCCESS) 以识别程序已成功执行。否则 -1(也EXIT_FAILURE

编辑:(感谢@KeithThompson):

EXIT_FAILURE是实现定义的。1是一个共同的价值,EXIT_FAILURE但重点是,你不必知道。

于 2013-02-18T02:26:29.193 回答
8

由于历史原因,可以编写return 0;从已声明为的函数返回void,如下所示:

void foo( /* arguments */ )
{
  /* do things */
  return 0;
}

这没有任何作用,并且0(或您放在那里的任何东西)都被扔掉了。此外,如果你这样做,明智的编译器会给你一个警告信息。所以不要这样做。

于 2013-02-18T02:29:25.123 回答
6

如果没有定义其他返回类型,C 中的函数默认返回 int。如果调用者正在查看返回值,return 0 将是确保函数返回已知值而不是随机值的好习惯。

于 2013-02-18T02:19:47.987 回答
4

它实际上是返回一个 0 的整数。

于 2013-02-18T02:18:47.430 回答
1

C 编程语言允许程序退出或从主函数返回,通过返回整数或返回宏EXIT_SUCCESSEXIT_FAILURE. 在 Unix 上,它们分别等于 0 和 1。AC 程序也可以使用exit()指定整数状态或退出宏的函数作为第一个参数。

除了宏EXIT_SUCCESS和之外EXIT_FAILURE,C 标准没有定义返回码的含义。返回码的使用规则因平台而异。

于 2015-08-27T04:32:45.197 回答
1

在 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

}
于 2015-08-27T14:18:29.637 回答