在練習「加速C 」中的練習2-3 時,學習者可能會遇到與比較有符號和無符號整數相關的警告。無符號整數表達式。當使用整數 (int) 與 string::size_type 進行比較時,會出現此警告。
C 中的整數可以是有符號的,也可以是無符號的。有符號整數的值範圍為 -2^(n-1) 到 2^(n-1) - 1,其中 n 是表示整數的位數。另一方面,無符號整數的範圍為 0 到 2^n - 1。
給定程式碼中出現警告是因為變數 r 是int,有符號,而 padtopbottom 也是 int。然而,c 是一個 string::size_type,在大多數平台上都是無符號的。比較有符號和無符號整數時,編譯器會發出警告,指出由於值範圍不同而可能出現意外行為。
為了避免此類警告和潛在問題,需要建議:
提供的程式碼不包括「Accelerated C」中範例程式的程式碼。原始程式可能使用 const int 進行填充,因為已知這些值將為正數,並且使用 const 是為了清楚起見。但是,在使用使用者輸入時,將變數宣告為 unsigned 或 size_t 以避免上述警告非常重要。本書後面的章節可能會提供有關正確處理此類比較的進一步見解。
以上是為什麼在 C 中比較有符號和無符號整數會觸發警告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!