ホームページ >バックエンド開発 >C++ >C は符号付き整数と符号なし整数の比較をどのように処理しますか?

C は符号付き整数と符号なし整数の比較をどのように処理しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-07 00:16:11995ブラウズ

How Does C   Handle Comparisons Between Signed and Unsigned Integers?

C における符号付き型と符号なし型の比較

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。