今天在我学习KMP算法时,在运行代码中,被一个比较判断卡住了
-1<s.length(),输出居然为0
#include<iostream>
#include <typeinfo>
using namespace std;
int main()
{
string a="asd";
cout<<(-1<a.length())<<endl;
cout<<typeid(a.length()).name()<<endl;
}
out:
y
0
后来查看string.length()返回值类型,才发现是y,unsigned long long (int)
无符号类型会把负数转为非常大的一个数,也就是带符号位的码,转为不带符号位的码
这个要注意,一个小bug