美文网首页LeetCode蹂躏集
2018-07-02 容器.size()与int比较问题

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

作者: alexsssu | 来源:发表于2018-07-02 14:33 被阅读0次
    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进行操作。

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/hpqluftx.html