版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/iov3Rain/article/details/82988606
unsigned int 可以和 int进行比较
但是比较前unsigned int要先转换为int
所以有可能结果非预期结果
而string.size()的返回值为unsigned int。
所以可能出现下面的情况
int main()
{
string s = "abcde";
int x = -1;
cout << (x > s.size()) << endl;
return 0;
}
结果为
但是-1肯定是不大于5的。
所以进行比较时把无符号数强转为有符号数,就可以避免错误了。(编译器的自动进行的转换和强制转换不一样)
int main()
{
string s = "abcde";
int x = -1;
cout << (x > (int)s.size()) << endl;
return 0;
}
结果为: