提示数组越界了
你用个printf语句输出一下a的值看看
你这s1和s2是一样长的,a = s2.size() - n -1,这里n=s1.size(),那么a的值就是-1了啊,自然进不了循环
你的问题和错误的原因是:
vector的size函数的返回值是无符号型,也就是说不会是负数。
int a = s2.size()-n-1时,由于a定义成int是有符号的,所以在for循环中i<=a是不会成立的,所以不进循环
但如果写成
for(int i=1;i<=s2.size()-n-1时,s2.size()-n-1的结果会存储到一个隐式变量中,这个变量默认会是s2.size()函数的返回值类型,即无符号整型,导致这个结果不是-1,而是整型的0xFFFFFFFF,一个很大的值,所以能进循环,且由于值超过1,导致循环中访问s2数组时,下标越界而崩溃了