簡體   English   中英

C 中 main(i) 的含義是什么,它是如何工作的? i 的值和類型是什么?

[英]what is the meaning of main(i) in C, and how does it work? and what is the value and type of i?

void main(i)
{
    printf("%d",i);
}

這里的main(i)是什么意思以及它是如何工作的? 什么是i值和類型?

void main(i)

聲明沒有類型的函數參數僅在舊的、過時的 C90 標准中有效。 在 C90 中, i會默認輸入int

如果此代碼用於獨立實現(嵌入式系統或操作系統),則它在 C90 中將有效。 它相當於void main (int i) 您的編譯器需要記錄這種形式的 main() 應該做什么。

如果此代碼用於托管實現(在操作系統上運行的編程),則它無效且無法編譯。 C90 2.1.2.2 Hosted 環境只允許兩種形式的 main():

int main(void) 
int main(int argc, char *argv[])

在較新的 C 標准中,無論是獨立的還是托管的,代碼都將無效,因為“默認為 int”規則已從語言中刪除。

可能int類型,表示在命令行上傳遞的參數數量; 包括程序名稱。

但是您不應該像那樣編寫main原型,因為程序行為是由實現定義的,因此可能因平台而異。

使用int main(void)int main(int argc, char **argv)代替。

首先,

void main(i)
{
    printf("%d",i);
}

C無效語法,你不應該使用它,因為, C標准說

  1. 案例 1:[ C11 , §5.1.2.2.1 ],在托管環境中,

    • main()應該返回int
    • 它應采用 0 ( void ) 或 2 ( int argc, char*argv[]或等效) 參數。
  2. 案例 2:在獨立環境中,

    • 它是無效的(根據最新標准),因為C標准不再支持“變量類型默認為int ”的概念。

[這只是為了理解,標准中不再支持,因此不能保證行為。]

現在,回到上面代碼的含義部分,在main()提供i的定義是一種hacky和過時的方式,主要用於代碼高爾夫以縮短代碼大小。 i的類型在此處默認為int ,並保存提供給程序的擴充數(包括程序名稱)。

因此,例如,如果程序運行如下

 ./test

在程序中, i最有可能的值為1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM