C程序中的main()
函数是否可以返回double
数据类型?
如果是,又如何以及为何?
如果否,为什么?
答案 0 :(得分:7)
是。根据C标准,main()应该返回int
值。但必须。
答案 1 :(得分:3)
来自C99
5.1.2.2.3程序终止 如果main函数的返回类型是a 类型与int兼容,返回 从最初的电话到主要 函数相当于调用 退出函数的退出函数 由主要功能作为其 争论; 10)达到那个 终止main函数返回一个 值为0.如果返回类型不是 兼容int,终止 状态返回给主机 环境未指明
此处参考 - 5.1.2.2.3程序终止 http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf
答案 2 :(得分:1)
如果main
返回double,我不知道它意味着什么。无论如何,这是gcc发生的事情:
double main ()
{
return 0.0;
}
$ cc double.c double.c: In function 'main': double.c:2: warning: return type of 'main' is not 'int' $ ./a.out $ echo $? 255 $
答案 3 :(得分:1)
main()
应该返回EXIT_SUCCESS
或EXIT_FAILURE
的值,除非特别设置一个既不是但仍介于两者之间的状态0 - 255,以使状态有意义。
例如,返回114可能会告诉调用init脚本一些可以由脚本纠正的情况。
如果在POSIX操作系统下尝试从3.14
返回main()
,则调用过程几乎总是会看到255
。
我不确定其他的操作系统,但总的来说 - C会让你侥幸逃脱的并不总是让操作系统本身可以让你侥幸逃脱:)这根本不是特定于POSIX的。
答案 4 :(得分:0)
名为main的函数充当C的托管实现中的程序的入口点必须返回int。可以编写名为'main'的 函数,该函数返回一个double。要做到这一点,你让它静止,然后你自己买一个防弹背心,并可能雇用一些武装警卫;如果有人必须保持这种怪物,你就需要它们。
答案 5 :(得分:0)
如果您处于托管环境中(即通常在PC上),则返回值类型是固定的,如前所述。如果在独立环境中运行,则可以返回不同的值类型。在为微控制器编程时通常会出现一个独立的环境,因为没有操作系统(您创建一个直接在硬件上运行的大型二进制文件)。但是,在这种情况下,main的常用原型是void main(void)
。
但是返回像double
这样的其他类型有什么意义呢?除非调用者(即操作系统)可以使用返回值执行某些操作,否则它是没有意义的,并且由于调用者无法知道返回值的类型,因此必须修复它。