gpt4 book ai didi

c - Main() 中是否需要返回一个值?

转载 作者:太空狗 更新时间:2023-10-29 17:20:50 27 4
gpt4 key购买 nike

当我遇到 C 程序的 return 语句/exit 语句时,我正在编写一个用于计算某些东西的快速程序。

我将 main() 声明为 int 类型,因此我必须返回一个整数,否则我的程序将无法正确编译。但是,将 main 设为 Boolean 甚至 void 是否可以接受?

我知道创建 C 程序的标准方法是返回一个值,这样任何问题都可以得到解决,但是 Boolean 不会以同样的方式工作吗?另外,我是否可以声明它 void 并且在它终止后操作系统仍在运行我的程序时没有问题?

感谢所有帮助。

最佳答案

C99 标准说:(§5.1.2.2.1 程序启动)

The function called at program startup is named main. The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters:

int main(void) { /* ... */ }

or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared):

int main(int argc, char *argv[]) { /* ... */ }

or equivalent; or in some other implementation-defined manner.

因此在托管环境中,int 是唯一有效的标准返回类型。不过,实现可以定义其他入口点。

请注意,§5.1.2.2.3 程序终止部分有以下内容:

If the return type of the main function is a type compatible with int, a return from the initial call to the main function is equivalent to calling the exit function with the value returned by the main function as its argument; reaching the } that terminates the main function returns a value of 0. If the return type is not compatible with int, the termination status returned to the host environment is unspecified.

因此,在 C99 中省略 main 的返回是合法的,只要您的 main 返回 int
(但是以前版本的 C 标准没有 main 的异常 - 不返回任何值(或到达最终 } 没有 return 语句)导致“返回到宿主环境的终止状态[是]未定义的。"。)

关于c - Main() 中是否需要返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8376421/

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