-3
我试图谷歌它,我发现C中的main()具有返回类型'int'。如果它是'无效',则在内部将其视为'int'。 'float'或'double'是不允许的。但是当我在代码块中写这个时:在C中如何以及为什么float main()工作?
double main()
{
printf("hello");
return 0;
}
它成功执行。 我想知道这是可能的。
我试图谷歌它,我发现C中的main()具有返回类型'int'。如果它是'无效',则在内部将其视为'int'。 'float'或'double'是不允许的。但是当我在代码块中写这个时:在C中如何以及为什么float main()工作?
double main()
{
printf("hello");
return 0;
}
它成功执行。 我想知道这是可能的。
C标准n1124说
§ 5.1.2.2.1计划启动
称为在程序启动的功能被命名为主力。 实现声明此函数没有原型。它应为 ,定义为返回类型为int且不带参数:int
main(void) { /* ... */ }
或带有两个参数(在此称为 argc和argv,尽管可以使用任何名称,因为它们是 函数的本地函数,其中它们被声明):
int main(int argc, char *argv[])
{ /* ... */ }
或等同物; 9),或在一些其它实现定义 方式。
因此,它是不确定的了什么事,你的程序,你不服从它应该遵守的规则。
使用除int之外的返回类型都是未定义的行为。而已。 –
“它成功执行”但程序_return_预期的'0.0'?简单地执行代码并不能证明这一点。你需要一种方法来测试程序的返回值,以便知道它“成功执行”。 – chux
即使程序编译,编译器也不会发出任何警告,并返回'0.0',但这并不意味着它是一个有效的C程序。 – emlai