C++ if 后跟一个 for 循环 block

标签 c++ if-statement

我记得有一次我看到有人写这样的 C++ 代码:

if (something is true)
    for (int i = 0; i < max; i++) {
        //do something
        line 1;
        line 2;
        line 3;
        ....
        ....
    }
else
    ....

它的工作原理与下面的代码相同:

if (something is true) {  //note the bracket here
    for (int i = 0; i < max; i++) {
        //do something
        line 1;
        line 2;
        line 3;
        ....
        ....
    }
}
else
    ....

我想知道编译器是否将 for 循环 block 视为嵌套在 if 子句中的一行?括号内的多行代码总能当成一行吗?我不太明白编译器是如何解析和分析这个的。

最佳答案

这确实是正确的代码,尽管它很容易让读者感到困惑。 if 语句将后面的第一个语句视为 then 语句。 {} 之间的代码通常被视为 block 或复合语句,其中包含语句。类似地,for 语句被视为一个语句,包括循环体,这是它后面的第一个语句(也可以是一个 block )。

关于C++ if 后跟一个 for 循环 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18747510/

相关文章:

c++ - 具有默认参数和特化的模板

c++ - 关于删除通过 placement new 创建的对象的困惑

jquery - Highcharts xAxis 标签的 if 语句

python - 为什么 line != "\n"或 line != "\r\n"或 line ! ="\r"无法过滤空行?

bash - 使用 grep 读取行

c++ - 模板文件中的类 'does not name a type' 错误

c++ - 在 Windows CE 7 上指定动态端口范围

c++ - 从 STL 容器中移除一些东西而不解构它

c++ - 比较数组成员与嵌套循环,计算满足条件(if)的次数

java - 与平面 if 语句相比,嵌套 if 语句是否可以提高性能或具有其他优势?