美文网首页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