看下面的这段代码:
#include<iostream>
#include<queue>
using namespace std ;
int main(void) {
int ans = -1 ;
queue<int> Q ;
Q.push(3) ; Q.push(4) ;
if(ans > Q.size()) {
cout << ans << " > " <<Q.size() << endl ;
}
return 0 ;
}
运行之后的结果会输出 : -1 > 2
原因是size()返回的是一个无符号整型数,ans是一个整形数字,比较的时候被转换为无符号数,即(unsigned int) -1 = 4294967295 .
可以将size()的返回值赋给int类型,然后比较。
同样返回无符号整型的函数有:strlen()等。