首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

编译小疑点,好奇怪

2013-01-18 
编译小问题,好奇怪int getsize(vectorstring &strs){int maxlen INT_MINfor(int i 0 i strs.siz

编译小问题,好奇怪


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进行比较。

热点排行