从主要必须返回零,并且main的返回值如何有用?

dva*_*ria 5 c return-value exit-code

我知道C89中的约定总是在C程序中从main返回0整数值,如下所示:

int main() {

    /* do something useful here */

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是为了向操作系统返回"成功"结果.我仍然认为自己是C语言中的新手(或者说是最好的中级程序员),但到目前为止,我还没有完全理解为什么这很重要.

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

我的问题:

  1. 从C程序返回零总是必要的吗?
  2. 返回值如何main()有用?

Ben*_*oit 6

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

规范地,a && b将运行b,如果结果a是零,并且a || b将运行b,如果a返回非零值.

如果您希望在前一个命令成功的情况下有条件地运行命令,这将非常有用.例如,如果文件包含单词foo,则要删除该文件.然后你将使用:

grep foo myfile && rm myfile
Run Code Online (Sandbox Code Playgroud)

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