编译小问题,好奇怪
int getsize(vector<string> &strs)
{
int maxlen = INT_MIN;
for(int i = 0; i < strs.size(); i++)
{
string str = strs[i];
//cout<<str.size()<<' '<<maxlen<<endl; //明明str.size > maxlen,却执行不到,好奇怪
if(str.size() > maxlen)
{
maxlen = str.size();
}
}
return maxlen; //maxlen会返回INT_MIN,而不是6
}
vector<string> strs;
strs.push_back("hello");
strs.push_back("helx");
strs.push_back("helmnk");
strs.push_back("helln");
求教
[解决办法]
x.cpp:13: warning: comparison between signed and unsigned integer expressions
maxlen是signed的,str.size()是unsigned的,两相比较,maxlen被cast成unsigned的,在这里就是很大的一个数,没有一个string的长度比它长。
将maxlen初始化为0即可。
或者将str.size()cast成signed进行比较。