以下程序给出有符号/无符号不匹配警告:
#include <iostream>
int main()
{
unsigned int a = 2;
int b = -2;
if(a < b)
std::cout << "a is less than b!";
return 0;
}
我试图理解混合有符号和无符号整数的问题。据我所知,int 通常使用二进制补码存储在内存中。
所以,假设我有数字 2。根据我的理解,它将在内存中表示如下:
00000000 00000000 00000000 00000010
并且 -2 将表示为一个人的恭维加 1,或者:
11111111 11111111 11111111 11111110
有了两个的恭维,就没有像“符号和大小方法”这样的符号保留。如果没有符号位,为什么无符号整数能够存储更大的正数?混合有符号/无符号整数时可能发生的问题的示例是什么?