使用for循环和if语句并排C++

Sus*_*yan 0 c++ syntax for-loop if-statement

有人可以解释使用for和if并排的语法吗?

int min_dist = huge;
int v = -1;

for (int i = 0; i < N; ++i) if (!done[i]) {
    if (d[i] >= min_dist) continue;
    min_dist = d[i];
    v = i;
} 
Run Code Online (Sandbox Code Playgroud)

Sto*_*ica 8

它不是并排的.这是一个if内部for.a的语法for

for(...)
  statement
Run Code Online (Sandbox Code Playgroud)

它恰好if也是一个陈述.所以你的代码等同于:

for(...)
  if() {
  }
Run Code Online (Sandbox Code Playgroud)

因为编译过程几乎忽略了空格.是否有新线路并不重要.这仍然是一个声明.就像单线一样无关紧要

if (d[i] >= min_dist) continue;
Run Code Online (Sandbox Code Playgroud)

如果我们不省略那些显然至关重要的括号:

for(...) {
  if() {
  }
}
Run Code Online (Sandbox Code Playgroud)

我们将来不太可能感到困惑.