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
この動作をより明確に確認するには、次のコード サンプルを検討してください。
#include <iostream> int main() { unsigned int a = 0; int b = -1; std::cout << std::boolalpha; std::cout << (b < a) << "\n"; }
このプログラムは、 b が明らかに a より小さい場合でも、false を出力します。これは、b が符号なし整数に昇格され、負の符号が無視されるためです。
以上がC は符号付き整数と符号なし整数の比較をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。