main()函数可以返回double吗?

时间:2010-05-23 06:29:36

标签: c return-type

C程序中的main()函数是否可以返回double数据类型?

如果,又如何以及为何?

如果,为什么?

6 个答案:

答案 0 :(得分:7)

是。根据C标准,main()应该返回int值。但必须

See here

答案 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)

C表示完全没问题。另一方面,POSIX需要0到255之间的整数。通常,main()应该返回EXIT_SUCCESSEXIT_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这样的其他类型有什么意义呢?除非调用者(即操作系统)可以使用返回值执行某些操作,否则它是没有意义的,并且由于调用者无法知道返回值的类型,因此必须修复它。