int 与 string::length()

今天在代码中遇到这样的问题

int nStart = -1;
while (nStart < strTemp.length())
{
    ...  
}

感觉自己写的逻辑没有错误,但是,代码执行结果就是不对,结果单步调试到该处发现,while语句一次也没有执行,为什么呢?

这里的原因是:string::length()的返回值string::size_type类型,而size_type是unsigned int的,所以-1跟它比较是比它大的。


 

哎,细节决定成败啊,以后千万要注意

posted @ 2014-12-27 17:59  冷冰若水  阅读(238)  评论(0编辑  收藏  举报