c - main函数返回值错误?

标签 c function program-entry-point

我之前看过C语言中的0表示false,1表示true。 并且注意到 main 函数返回 0 但这是为什么呢?如果我的所有代码都成功运行,它应该返回 true (1)。 另一个相关问题,我仍然无法理解谁可以使用可返回值?因为在我的程序中没有其他函数调用主函数,所以没有人知道我的程序是否运行良好。 我有点困惑。

最佳答案

如果 main 的返回值,您的逻辑就有意义了被解释为 bool 值,但事实并非如此。从初始调用返回到 main就像调用 exit功能:它向您正在运行的系统报告终止状态。

标准 C 指定了 3 种可移植的退出状态:

  • 0 , 表示成功
  • EXIT_SUCCESS , 也表示成功
  • EXIT_FAILURE , 表示失败

(最后两个是<stdlib.h>中定义的宏。)

在 Unix 上,任何 8 位值 (0 .. 255) 都是允许的。所有非零值都被解释为错误代码。对于任何给定数字的含义,没有通用的约定,只有 0代表成功和任何其他某种失败。

至于谁可以使用返回值:在Unix上,一个父进程可以使用waitwaitpid获取已终止子进程的退出状态。


在 C 标准库中,执行操作的函数通常不会返回真/假状态。 (诸如 islowerisdigit 之类的测试可以,但它们没有任何其他影响。)例如,remove (删除文件)返回 0关于成功和-1错误。这也是 Unix 系统调用的常见模式。例如,open成功时返回一个文件描述符(一个非负整数),-1错误。

关于c - main函数返回值错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56760942/

相关文章:

c++ - 在 C++ 中从 main() 调用的函数

c - c中带 float 的模数

c - 替换 C 中的函数定义

c - 使用 OpenSSL C 库在多线程中生成椭圆曲线 key 对 (EC_KEY_generate_key)

c++ - 使用一对作为另一个函数的参数

c - 使用 GOTO 时 StackFrames 会受到怎样的影响?

c++ - LIBCMT 库 : error LNK2001: unresolved external symbol _main

c++ - 向项目添加类后对 'main' 的 undefined reference

objective-c - 在 Rails 应用程序中使用 Ruby 扩展 (.bundle)

c - Pthreads - 我可以从线程分离然后加入主线程吗?