我记得有一次我看到有人写这样的 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/