否则如果&大括号

Abd*_*our 0 c c++ if-statement parentheses

为什么这两个代码片段有不同的输出?

它们之间的唯一区别是每个if/else-if语句的大括号,但这在这里不重要,对吧?

while (1){
    if (i>=n&&j<0)
        break;

    else if (j<0)
        if (Arr[i])
            c++;

    else if (i>=n)
        if(Arr[j])
            c++;

    else if (Arr[i]==1&&Arr[j]==1)
        c+=2;

    i++;
    j--;
}
Run Code Online (Sandbox Code Playgroud)

..

while (1){
    if (i>=n&&j<0){
        break;
    }
    else if (j<0){
        if (Arr[i])
            c++;
    }
    else if (i>=n){
        if(Arr[j])
            c++;
    }
    else if (Arr[i]==1&&Arr[j]==1){
        c+=2;
    }
    i++;
    j--;
} 
Run Code Online (Sandbox Code Playgroud)

Vla*_*cow 11

如果您正确格式化了第一个代码段

while (1){
    if (i>=n&&j<0)
        break;

    else if (j<0)
        if (Arr[i])
            c++;

        else if (i>=n)
            if(Arr[j])
                c++;
            else if (Arr[i]==1&&Arr[j]==1)
                c+=2;

    i++;
    j--;
}
Run Code Online (Sandbox Code Playgroud)

然后可以看到else或者如果对应于最接近的if语句.