C语言的程序里在main主函数之前需要啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言的程序里在main主函数之前需要啥?相关的知识,希望对你有一定的参考价值。

参考技术A 看什么编译器,有的编译器,可以默认包含stdio.h,就不用include
而且,如果不用任何函数,所有编译器都可以不用include
比如
int
main()


int
a
=
1;

int
b
=
2;

int
c
=
a
+
b;

return
(c);

只有main就可以

主函数返回值错误?

【中文标题】主函数返回值错误?【英文标题】:Wrong returned value in main function? 【发布时间】:2019-11-07 16:46:52 【问题描述】:

我之前读过 C 语言中的 0 表示假,而 1 表示真。 并且注意到 main 函数返回 0 但为什么呢?如果我的所有代码都成功运行,它应该返回 true (1)。 另一个相关的问题,我还是不明白谁可以使用returnable value?因为在我的程序中没有其他函数调用主函数,所以没有人知道我的程序是否运行良好。 我有点困惑。

【问题讨论】:

OS 询问 main.. 有什么问题吗?它返回错误代码 0.. 表示没有错.. 另外,谁可以使用返回的值?父进程可以..例如,如果您创建一个子进程并且它返回-1或其他值,则父进程可以知道它没有履行职责。 你的程序失败了吗?不,它没有......所以它返回零(又名假) 如果错误发生,则基本上 main 返回一个整数错误代码,否则为零(=NO ERROR ALL FINE)。如果在布尔表达式中这样使用,C 仍然将 1 解释为真,将 0 解释为假 C 函数返回 true/false 表示成功不是常见的约定。成功时返回 0 或失败时返回错误代码更为常见。 【参考方案1】:

如果main 的返回值被解释为布尔值,您的逻辑将是有意义的,但事实并非如此。从初始调用返回到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 出错。

【讨论】:

【参考方案2】:

这基本上是@Brandon 在 cmets 中已经说过的。

main 应该返回程序的exit/error code。在 Unix 约定中,0 用于表示没有错误(错误值为“false”)。然后用正值表示有错误,是什么错误。

【讨论】:

从未将 0 视为“错误值为假”。这是一种很好的思考方式。 不仅仅是积极的价值观。但也有负值。我已经看到程序在被杀死时返回 -9 或 -1 等 :) 但无论如何,我 +1。 @Brandon 不在 Unix 上。 还值得一提的是,如果您不指定返回值,这是唯一一个返回 0 的函数,并且它会从块的末尾脱落。【参考方案3】:

这实际上只是你在程序完成时提出的那种问题。

案例一:

你失败了吗?

案例 2:

你通过了吗?

在第一种情况下,“好程序”将返回 false(也称为零)

在第二种情况下,“好程序”将返回 true(也就是非零)。

共识是使用案例 1,即“你失败了吗?”。因此,非失败程序返回零表示“我没有失败”。

这种方法的好处是可以使用非零值来表示不同类型的故障,而零总是“没有故障”

【讨论】:

【参考方案4】:

C 语言认为true(非零)或false(零)与操作系统的值之间存在差异用于表示正常的程序终止。

严格来说,C 程序应该以EXIT_SUCCESS 的代码退出正常程序终止或EXIT_FAILURE 异常终止。 EXIT_SUCCESS 将映射到底层平台用来指示成功的任何代码,可能是也可能不是 0

【讨论】:

以上是关于C语言的程序里在main主函数之前需要啥?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中在main函数之前会执行啥?

c语言中在main函数之前会执行啥?

请教高手,C语言中,把变量定义在主函数之外和定义在主函数之内有啥区别?

main() 主函数是啥意思啊

C语言中 main 是啥意思?

c语言main啥意思?