c - 从 main 返回零是必要的吗?从 main 返回的值有什么用?

标签 c return-value exit-code

我知道 C89 中的惯例是在 C 程序中始终从 main 返回一个 0 整数值,如下所示:

int main() {

    /* do something useful here */

    return 0;
}

这是向操作系统返回一个“成功”的结果。我仍然认为自己是 C 语言的新手(或充其量是中级程序员),但迄今为止我从未完全理解为什么这很重要。

我的猜测是,如果您将此程序的输出绑定(bind)到另一个程序的输入,这是一个有用的返回结果,但我不确定。我从来没有发现它有用,或者我只是不明白它的意图是什么。

我的问题:

  1. C 程序总是需要返回零吗?
  2. main() 的返回值有什么用?

最佳答案

编写脚本时(如 Bash 或 Windows 上的 CMD.exe) 你可以用 && 和 || 链接一些命令运营商。

规范地,如果 a 的结果为零,a && b 将运行 b,而 a ||如果 a 返回非零值,b 将运行 b

如果您希望在前一个命令成功时有条件地运行命令,这将很有用。例如,你想删除一个包含单词 foo 的文件。然后你将使用:

grep foo myfile && rm myfile

grep 匹配时返回 0,否则返回非零。

关于c - 从 main 返回零是必要的吗?从 main 返回的值有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3793531/

相关文章:

multithreading - 从线程返回字符串 Delphi

javascript - 如何从 webbrowser C# 返回 javascript 函数值

php - C、exit 和 pcntl_wait 函数产生 256 的倍数,为什么?

bash - 使用 --help 参数调用的 bash 脚本应该返回 0 还是非零退出代码?

ios - 我试图在 Xcode Run Script 构建阶段返回一个非零退出代码,但它不起作用

c++ - posix 中的健壮 rwlock

C 错误预期标识符

c - 为什么 realpath 函数在 Cygwin 中不起作用?

c - 是否可以定义没有temp/aux变量的指针? (或者这会是不好的C编码吗?)

go - 在正常功能上返回 Golang 中的 'ok' 之类的映射