我记得有一次我看到有人写这样的C++代码:
if (something is true)
for (int i = 0; i < max; i++) {
//do something
line 1;
line 2;
line 3;
....
....
}
else
....
Run Code Online (Sandbox Code Playgroud)
它的工作原理与以下代码相同:
if (something is true) { //note the bracket here
for (int i = 0; i < max; i++) {
//do something
line 1;
line 2;
line 3;
....
....
}
}
else
....
Run Code Online (Sandbox Code Playgroud)
我想知道编译器是否将for循环块视为嵌套在if子句中的一行?括号内的多行代码是否总是被视为一行?我不太明白编译器如何解析和分析它.
这确实是正确的代码,虽然它可能很容易混淆读者.该if语句来考虑第下面的语句,因为它的then声明.代码之间{}通常被视为块或复合语句,包含其中的语句.类似地,该for语句被认为是一个语句,包括循环体,它是跟随它的第一个语句(并且可以再次是一个块).