為什麼MSVC 接受有符號/無符號相等比較而不發出警告
儘管Microsoft Visual C 嚴格處理比較運算符中的有符號/無符號不匹配,但(MSVC) 意外地容忍有符號和無符號類型之間的相等性。此行為是由底層轉換規則引起的。
積分提升和有符號/無符號轉換
在比較期間,MSVC 遵循 C 標準 5/9 中概述的積分提升規則。如果一個運算元有符號,另一個無符號,則有符號運算元將轉換為無符號。
對於相等性,此轉換不會影響結果:-1 == (無符號) -1。然而,對於其他比較運算符,它確實很重要:-1 > > 2U 為 true,因為 -1 轉換為無符號值。
MSVC 警告等級和有符號/無符號比較
MSVC 的警告等級決定哪些有符號/無符號不符會觸發警告。開發人員針對相等與更大/更少比較做出了具體選擇:
以上是為什麼 MSVC 不對有符號/無符號相等比較發出警告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!