次のプログラムは、符号付き/符号なしの不一致の警告を出します。
#include <iostream>
int main()
{
unsigned int a = 2;
int b = -2;
if(a < b)
std::cout << "a is less than b!";
return 0;
}
符号付きintと符号なしintの混合に関して、問題を理解しようとしています。私が聞いたところによると、intは通常、2の補数を使用してメモリに格納されます。
それで、私が番号2を持っているとしましょう。私が理解していることに基づいて、それは次のようにメモリに表されます。
00000000 00000000 00000000 00000010
また、-2は、1の補数に1を加えたものとして表されます。または、次のようになります。
11111111 11111111 11111111 11111110
2つの褒め言葉で、「符号と大きさの方法」のような符号のために予約されたビットはありません。符号ビットがない場合、unsigned intがより大きな正の数を格納できるのはなぜですか?符号付き/符号なしintを混合するときに発生する可能性のある問題の例は何ですか?