gpt4 book ai didi

c - 编译器中哪个函数负责接受main()的返回值

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:39 24 4
gpt4 key购买 nike

这是我从先生那里得到的一个奇怪的问题。他说如果我们不把返回类型放在 main() 之前,它会返回一个垃圾值。他说这个垃圾值在C编译器中返回给一个函数。

  1. 哪个编译器函数负责?
  2. 如果这个编译器函数参数是一个垃圾值会怎样?

例如:

main()
{

printf("Hello world");

} //will return a garbage value since no return type

最佳答案

调用 main() 并安排使用 main() 返回的值退出程序的函数不一定有名称。目标文件通常有一个名字,如crt0.o,负责调用main(),并用返回值调用exit() .

代码 main() { …;/* 不返回 */ 在 C99 和 C11 中无效;您必须指定返回类型(int — 参见 What should main() return in C and C++?)。在 C89/C90 标准中,您可以编写没有返回类型的 main(),但是您必须从 main() 中显式返回一个值,否则您会,的确,得到垃圾返回。

然而(有些人认为这是错误的,尽管它与 C++ 兼容),C99 规定如果你没有明确地从 int main(void) { …;/* No return */,编译器有效地为你插入return 0;

因此,显示的代码是 C89/C90(或准标准)C,应该有一个返回值。

关于c - 编译器中哪个函数负责接受main()的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26310526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com