2015-08-08 706 views
-3

我试图谷歌它,我发现C中的main()具有返回类型'int'。如果它是'无效',则在内部将其视为'int'。 'float'或'double'是不允许的。但是当我在代码块中写这个时:在C中如何以及为什么float main()工作?

double main() 
{ 
printf("hello"); 
return 0; 
} 

它成功执行。 我想知道这是可能的。

+2

使用除int之外的返回类型都是未定义的行为。而已。 –

+1

“它成功执行”但程序_return_预期的'0.0'?简单地执行代码并不能证明这一点。你需要一种方法来测试程序的返回值,以便知道它“成功执行”。 – chux

+0

即使程序编译,编译器也不会发出任何警告,并返回'0.0',但这并不意味着它是一个有效的C程序。 – emlai

回答

1

C标准n1124说

§ 5.1.2.2.1计划启动

称为在程序启动的功能被命名为主力。 实现声明此函数没有原型。它应为 ,定义为返回类型为int且不带参数:int main(void) { /* ... */ }或带有两个参数(在此称为 argc和argv,尽管可以使用任何名称,因为它们是 函数的本地函数,其中它们被声明):

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

或等同物; 9),或在一些其它实现定义 方式。

因此,它是不确定的了什么事,你的程序,你不服从它应该遵守的规则。

相关问题