在C 中,當將有符號整數與無符號整數進行比較時,有符號整數將提升為無符號整數。這意味著負號被忽略,整數被視為一個大的正值。
考慮以下 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"; }
在這個程式中,向量 a 的大小是一個無符號整數。但是,當將其與有符號整數 b 進行比較時,b 會被提升為無符號整數。這表示負號被忽略,b 被視為一個大的正值。因此,比較b<0。 a.size() 將始終為 false,並且程式將列印“Greater”。
要更清楚地看到此行為,請考慮以下程式碼範例:
#include <iostream> int main() { unsigned int a = 0; int b = -1; std::cout << std::boolalpha; std::cout << (b < a) << "\n"; }
此程式將輸出 false,即使 b 明顯小於 a。這是因為 b 被提升為無符號整數,且負號被忽略。
以上是C 如何處理有符號整數和無符號整數之間的比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!