未初始化變數作為其自己的初始化器的行為
在C 和C 中,未初始化的變數不會分配特定值。令人驚訝的是,使用這個未初始化的變數來初始化自身似乎在某些符合 C99、C11 和 C 11 標準的場景中是有效的。這引發了有關此類構造的行為的問題。
編譯器允許
編譯器允許這種行為,因為未初始化的變數在用作其初始值設定項時具有不確定的值。這個不確定值可以是未指定的,也可以是陷阱表示。
標準行為
C/C 標準規定在其自身的初始化中使用未初始化變數的行為是依賴於實現的。但是,提供了進一步的說明:
其他注意事項
需要注意的是,如果未初始化的變數仍然可能發生未定義的行為它的位址從未被佔用。根據 C11 標準,當使用具有自動儲存持續時間且可以聲明為暫存器儲存類別的物件時,這會導致未定義的行為。
因此,通常建議避免在自己的初始化中使用未初始化的變量,因為它的行為依賴於實現,並且可能會導致未定義的結果。
以上是在 C 和 C 中以變數自己的未指定值初始化變數是否有效?的詳細內容。更多資訊請關注PHP中文網其他相關文章!