理解負有符號整數與無符號整數的比較
在提供的C 程式中,比較b 時觀察到輸出「Greater 」是令人困惑的(-1) 與a.size() (0) 儘管-1 在算術上小於0。出現這種意外行為從有符號和無符號整數類型之間的根本區別來看。
在這種情況下,a.size() 傳回一個無符號整數,表示向量的大小。相比之下,b 是有符號整數。比較這兩個值時,有符號 b 會自動提升為無符號類型。此提升將 -1 轉換為大於 0 的大無符號值。
此行為不限於向量大小。以下程式碼片段示範了相同的問題:
#include <iostream> int main() { std::cout << std::boolalpha; unsigned int a = 0; int b = -1; std::cout << (b < a) << "\n"; }
執行時,此程式碼輸出“false”,表示在無符號類型的上下文中 -1 被視為大於 0。
為了避免這種混淆,重要的是要記住有符號和無符號整數具有不同的行為,並且在沒有仔細考慮預期操作的情況下不應混合使用。
以上是為什麼在 C 比較有符號整數和無符號整數時 -1 比較為大於 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!