造成这个的原因是 C++ string.size的返回值和unsigned int
比如这个没有进行强制转换将unsigned int 转成 int
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str = "abcde";
int res = -1;
cout << (res < str.size()) << endl;
return 0;
}
可以看到str的大小应该是比res大的,但是输出的结果确实0而不是1,得到了我们不想看到的结果!!!
这时候我们进行类型强制转换(int)str.size())
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str = "abcde";
int res = -1;
cout << (res < (int)str.size()) << endl;
return 0;
}
强制转换成int类型进行比较就可以得到期望的输出了!