負比較與正無符號整數?
在 C 中,我們經常遇到比較不同類型的值的情況。然而,理解這些比較的行為方式可能很棘手。
考慮以下程式碼:
#include <iostream> #include <vector> int main() { std::vector<int> a; std::cout << "vector size " << a.size() << std::endl; int b = -1; if (b < a.size()) std::cout << "Less"; else std::cout << "Greater"; }
即使“-1”明顯小於“0”,程式碼也會列印“Greater”。 「為什麼會出現這種情況?
關鍵在於涉及的資料類型不同。a.size() 傳回一個無符號整數,而b 是一個負符號整數。比較這兩種類型時,負符號整數將提升為無符號整數。進行比較,這顯然更大。假」。這是因為a 和b 都被提升為無符號整數,而「-1」現在是大於0 的大無符號值。
以上是為什麼在 C 中比較負整數與無符號整數會產生意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!