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进行操作。