字符串的str.size()和str.length()千万不要和负数做比较
当我刷题做到求一些字符串的最长和最远的字符串时,我把max初始化为INT_MIN,min初始化为INT_MAX,结果只能求出最短的字符串。我一直DEBUG发现if(str.size()>max)一直不执行,我就把max初始化为-1,还是不行,然后初始化为0,终于行了。然后我就在考虑为什么str.size()不能和负数做比较呢,然后我就查找了c++文档。
str.size()返回的是无符号整数,当无符号整数与有符号整数做比较时,程序默认把符号位看作数值,所以负号被看出了最高位的1,自然就比str.size()大了。
最后强调一下:
字符串的str.size()和str.length()千万不要和负数做比较!!!
字符串的str.size()和str.length()千万不要和负数做比较!!!
字符串的str.size()和str.length()千万不要和负数做比较!!!