在unsigned整型变量与signed整型做算术和逻辑运算时,signed变量会自动转换成unsigned变量,所以会产生一些难以预料的结果。
以vector.size()为例子,容器的size_type为了能表示足够大的范围(因为vector.size()>=0)所以返回值为unsigned;
比如下边的例子:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int j=-1;
bool a;
vector <int > b;
b.push_back(1);
a=j>=b.size();
cout<<a;
return 0;
}
调试结果是:
j = -1;
b.size() = 1;
j>=b.size() = true;
在这里j = - 1 会自动转换为j=1;