C 语言如何终止程序

本文内容

目录汇总:C 语言零基础入门教程

既然 main 是函数,那么它必须有返回类型。正常情况下,main 函数的返回类型是 int 类型,因此我们目前见到的 main 函数都是这样定义的:

1
2
3
4
int main(void)
{
  ...
}

以往的 C 程序常常省略 main 的返回类型,这其实是利用了返回类型默认为 int 类型的传统:

1
2
3
4
main()
{
  ...
}

省略函数的返回类型在 C99 中是不合法的,所以最好不要这样做。省略 main 函数参数列表中的 void 是合法的,但是(从编程风格的角度看)最好显式地表明 main 函数没有参数。

main 函数返回的值是状态码,在某些操作系统中程序终止时可以检测到状态码。如果程序正常终止,main 函数应该返回 0;为了表示异常终止,main 函数应该返回非 0 的值。(实际上,这一返回值也可以用于其他目的。)即使不打算使用状态码,确保每个 C 程序都返回状态码也是一个很好的实践,因为以后运行程序的人可能需要测试状态码。

exit 函数

main 函数中执行 return 语句是终止程序的一种方法,另一种方法是调用 exit 函数,此函数属于 <stdlib.h> 头。传递给 exit 函数的实际参数和 main 函数的返回值具有相同的含义:两者都说明程序终止时的状态。为了表示正常终止,传递 0:

1
exit(0);                   /* normal termination */

因为 0 有点模糊,所以 C 语言允许用 EXIT_SUCCESS 来代替(效果是相同的):

1
exit(EXIT_SUCCESS);        /* normal termination */

传递 EXIT_FAILURE 表示异常终止:

1
exit(EXIT_FAILURE);        /* abnormal termination */

EXIT_SUCCESSEXIT_FAILURE 都是定义在 <stdlib.h> 中的宏。EXIT_SUCCESSEXIT_FAILURE 的值都是由实现定义的,通常分别是 01

作为终止程序的方法,return 语句和 exit 函数关系紧密。事实上,main 函数中的语句

1
return 表达式;

等价于

1
exit(表达式);

return 语句和 exit 函数之间的差异是,不管哪个函数调用 exit 函数都会导致程序终止,return 语句仅当由 main 函数调用时才会导致程序终止。一些程序员只使用 exit 函数,以便更容易定位程序中的全部退出点。

请参阅

(完)

comments powered by Disqus

本文内容