这篇文章分析了一个bug: 用无符号类型与负数的比较为什么可能出错。
【c++】无符号类型与负数的比较 (该链接来自博主 清风起~ 的一篇博客,感谢其解惑)
我是在用STL的vector的size函数时发现的,大致为
int b=-1;
if(a.size()>=b){
//...
}
照理这判断语句可以成立,但实际是始终不成立,因为b先转化成了无符号整型(一个非常大的正数),所以始终比a.size()大。
所以最好先把a.size()转整型再使用。
这篇文章分析了一个bug: 用无符号类型与负数的比较为什么可能出错。
【c++】无符号类型与负数的比较 (该链接来自博主 清风起~ 的一篇博客,感谢其解惑)
我是在用STL的vector的size函数时发现的,大致为
int b=-1;
if(a.size()>=b){
//...
}
照理这判断语句可以成立,但实际是始终不成立,因为b先转化成了无符号整型(一个非常大的正数),所以始终比a.size()大。
所以最好先把a.size()转整型再使用。