[英]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:[ C11
, §5.1.2.2.1 ],在托管環境中,
main()
應該返回int
void
) 或 2 ( int argc, char*argv[]
或等效) 參數。案例 2:在獨立環境中,
C
標准不再支持“變量類型默認為int
”的概念。[這只是為了理解,標准中不再支持,因此不能保證行為。]
現在,回到上面代碼的含義部分,在main()
提供i
的定義是一種hacky和過時的方式,主要用於代碼高爾夫以縮短代碼大小。 i
的類型在此處默認為int
,並保存提供給程序的擴充數(包括程序名稱)。
因此,例如,如果程序運行如下
./test
在程序中, i
最有可能的值為1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.