if语句中的两句先后执行,结果不同

问题遇到的现象和发生背景

两条语句交换位置,输出结果不同

问题相关代码,请勿粘贴截图
#include
#include<string>
using namespace std;
void index_BF(string S,string T)
{
    int i=0,j=0;
    while(i<S.size())
    {
        if(S[i]==T[j]){i++;j++;}//依次向下匹配
        else {i=i-j+1;j=0;}//主串模式串回溯重新开始匹配
        if(j>=T.size())
        {
            cout<T.size()<<" ";
            i=i-j+1;j=0;
        }
    }
}
int main()
{
    string a,b;
    int x,y;
   cin>>x>>a>>y>>b;
    index_BF(b,a);
    return 0;
}

运行结果及报错内容

交换if语句中的i=i-j+1和j=0执行结果不同
第一种:

img

运行结果:

img


交换后:

img


运行结果:

img


都在if语句中,执行完大括号里的才会继续执行下面的,感觉先后顺序应该不影响呀

如果是 j=0;i=i-j+1;的话,这个j还有啥用?你直接写成i=i+1不就得了?明显不一样的啊

其实你根本就用不到 j ,直接不写 j ,写成 i++ 不就得了?