c++ - else if 和大括号

标签 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--;
}

..

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--;
} 

最佳答案

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

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--;
}

然后可以看出else或者else if对应的是最接近的if语句。

关于c++ - else if 和大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44938819/

相关文章:

c++ - 用于从流中读取 std::vector<T> 的模板函数

c++ - 为什么我不能使用继承来实现C++中的接口(interface)?

c - C 中 open(...O_DIRECT) 的可移植性?

c++ - 在 C 中循环遍历十六进制变量

javascript - 如何添加逻辑运算符?

C++ 枚举和编译器依赖

c++ - 我想接受用户输入并在我的 shell 环境中输出它

c++ - mmap 用于写入顺序日志文件以提高速度?

string - 如何在 Robot Framework 中搜索空字符串/比较两个字符串

java - AI——如何根据规则简洁生成所有可能的结果