And*_*kha 2 c++ comparison unsigned vector
请看一下这个简单的程序:
#include <iostream>
#include <vector>
using namespace std;
int main() {
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";
return 0;
Run Code Online (Sandbox Code Playgroud)
}
尽管很明显-1小于0,但它仍输出“ Greater”,这让我感到困惑size。谁能解释一下?
因为向量的大小是无符号整数类型。您正在将无符号类型与有符号类型进行比较,并且两者的补码负号有符号整数将被提升为无符号类型。这对应于较大的无符号值。
此代码示例显示与您看到的相同的行为:
#include <iostream>
int main()
{
std::cout << std::boolalpha;
unsigned int a = 0;
int b = -1;
std::cout << (b < a) << "\n";
}
Run Code Online (Sandbox Code Playgroud)
输出:
假