在C中嵌套的whiles

khe*_*nik 1 c loops

int count(int *a, int *b, int n) {
    int i=0,j=0,roz=0;

    while(i<n) {
        while(j<n) {
            if(a[i]==b[j])
                roz++;
            j++;
        }
        i++;
    }
    return roz;
}
Run Code Online (Sandbox Code Playgroud)

n是a或b数组的大小(两者的大小相同).嵌套的while循环似乎只工作一次,因为i = 0.接下来似乎发生的事情是将n神奇地改为1(开头是5),这样嵌套的while不会循环第二次.为什么会这样?

有趣的是,在返回之前回显n显示正确的值,即5 ...

编辑.For循环在这里正常工作,但问题仍然存在.

Zet*_*eta 11

您永远不会将值重置j为0.

  • 在这种情况下,为什么for循环优于while循环.忘记使用for循环语法重置计数器更加困难. (2认同)