-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