問題:
下面的程式碼編譯沒有錯誤,但是進入了無窮大循環:
int main() { return main(); }
答案:
答案:
在C 中從自身內部呼叫main 函數會導致未定義的行為。未定義的行為意味著任何事情都可能發生,包括:
程式可能崩潰。
程式可能永遠運作。 程式可能會損壞記憶體。C 標準明確規定 main 函數不能由表達式命名。當 main 呼叫自身時,編譯器必須發出診斷訊息並且不編譯程式碼。
儘管有此標準要求,但某些編譯器可能不會發出診斷訊息並允許程式編譯。然而,執行這樣的程式會呼叫未定義的行為。
編譯器行為:編譯器不需要強制執行 C 標準的所有規則,包括禁止 main 的規則呼叫自己。它們可能會發出警告或錯誤,但具體行為因不同的編譯器和編譯器設定而異。 意義:在 C 中遞歸呼叫 main 是非法的。即使編譯器允許,程式也會表現出未定義的行為,不應依賴。以上是C 中的 main 函數可以遞歸呼叫自身嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!