#include<stdio.h>
#include<math.h>
#include<vector>
#include<queue>
using namespace std;
vector<int>v;
queue<int>q;
int main()
{
v.push_back(1);
q.push(1);
int x=0;
int y=v.size()-2;
int z=q.size()-2;
printf("%d %d\n",x,y);
printf("%d %d\n",x<(v.size()-2),x<y);
printf("\n%d %d\n",x,z);
printf("%d %d\n",x<(q.size()-2),x<z);
return 0;
}
程序运行结果如下图:
很明显是有问题的,原因是size函数得到的结果是无符号数,转化为负数时就变成了一个很大的数。解决办法是把计算结果保存在一个变量中,就不会这样了。
【c++】无符号类型与负数的比较