c++ - 'If Else' 语句缩进在 C++ 中重要还是不重要?

标签 c++ if-statement

<分区>

if else 语句中的缩进是否对代码的执行有任何影响,还是只是为了让代码更清晰?

书中的例子 Accelerated C++ Andrew Koening 撰写:

while(c != cols) {
    if(r == pad + 1 && c == pad + 1) {
      cout << greet;
      c += greet.size();

    } else {

      if(r == 0 || r == rows - 1 || c == 0 || c == cols - 1)
        cout << "*";

      else
        cout << " ";
        ++c;
    }
  }

无论r=0与否,c的前缀自增都会执行,但我不明白为什么。

如果if 语句为真,则打印一个星号。 如果不是,则打印一个空格并递增c。 这就是我阅读它的方式,但是无论 rc 的值是多少,c 都会递增。

书上是这样写的,但我找不到任何解释:

Notice how the different indentation of ++c; draws attention to the fact that it is executed regardless of whether we are in the border.

最佳答案

空格不影响 C++ 运行时行为。 (不同于某些其他语言,如 Python)。

我应该在你的 else 中提到这一点 block ,你不使用大括号。因此,只有第一个语句 ( cout << " "; ) 将成为 else 的一部分。条款。后续++c;无论 r 的值如何,都将执行和 c .

请注意,这最后一点是主观的,所以要持保留态度……如您所见,当 if ... else ... 中省略大括号时 block ,有可能造成混淆。有些人会争辩说它会导致更简洁的代码,但许多人(包括我自己)会争辩说您应该始终使用大括号。当您在大型团队中工作时,这一点尤其重要,因为代码往往会随着时间的推移而增长。我在生产代码中见过很多情况,其中 if语句缺少大括号,有人在 if 中添加了第二行子句而不记得添加大括号。这没有按预期工作并导致浪费时间调试失败,只是因为省略了大括号。

关于c++ - 'If Else' 语句缩进在 C++ 中重要还是不重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50515672/

相关文章:

c++ - C++ 编译器可以缓存 constexpr 函数的结果吗?

mysql - SELECT IF 行到多列

java - 如何避免重复的 if 语句?

c++ - 将 if 中的一个值复制到另一部分

c++ - 在不使用默认构造函数或赋值的情况下在构造函数中初始化数组

c++ - 在 C++ 中显示小数点后五位,但如果小数点后有 0,则不打印它们

C++:如何为任意函数调用实现超时?

bash - Bash if 语句中什么时候需要方括号?

javascript - 为什么我的 if 语句适用于 else if,而不适用于 OR 运算符

c++ - 帮助解决这个编译错误