2018-07-02 容器.size()与int比较问题

int maxSize = -1;
string ss = "hello,world.";
if(maxSize < ss.size())
    cout << "ss.size()" << endl;
else
    cout << "maxSize"  << endl;

运行结果是输出maxSize,因为容器.size()的返回值类型是:
vector.size() : vector::size_type
string.size() : string::size_type

这些容器.size()都是返回无符号整形。
当maxSize与ss.size()进行比较时会先将maxSize强制类型转换为unsigned类型,此时int 型数据 maxSize = – 1,在计算机存储中int值负数以二进制补码的形式存在(32位为例)-1:1111 1111 1111 1111 1111 1111 1111 1111,而在unsigned中该二进制位代表着unsigned的最大值。
所以可以使用一个int型变量n存储ss的长度。
int n = ss.size();
然后再对n和maxSize进行操作。

    原文作者:alexssssu
    原文地址: https://www.jianshu.com/p/97a659e6b1ca
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞