簡體   English   中英

為什么在代碼中寫-0時沒有出現警告?

[英]Why doesn't a warning appear when -0 is written in the code?

我正在測試一個代碼,我不小心在一行代碼中輸入了 -0 並注意到沒有出現任何警告。 代碼行是: while(--argc>-0) 我用make編譯了程序。 為什么在代碼中寫-0時沒有出現警告?

您可能沒有意識到 C 中的 integer 常量不能為負數。 -0被解析為兩個標記,一元減號運算符-和 integer 常量 0。將一元減號應用於零是明確定義的,它只會再次產生零; 如果沒有這樣定義,一群憤怒的數學家會攻擊 C 委員會。 所以,C 編譯器不認為這是一個錯誤。

但是,如果您想要一個警告,因為您打算編寫while(--argc>=0) , go 並在您的 C 編譯器上提交功能請求。 錯字檢測最近越來越流行,他們可能會喜歡這個主意。

您不會收到警告,因為這是定義明確的 C 代碼,並且經驗沒有顯示這樣的代碼,這表明程序員錯誤經常足以值得警告。

暫無
暫無

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

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