if else语句中的缩进是否与代码的执行有任何关系,或者它只是为清洁代码做些什么?
Andrew Koening编写的Accelerated C++一书中的例子:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
无论是否r = 0,都执行c的前缀增量,但我不明白为什么.
如果if语句变为true,则打印星号.如果没有打印空格并且c递增.这就是我如何阅读它,但无论r或c的值是什么,c都会增加.
这就是它在书中所说的,但我找不到任何解释:
注意++ c的不同缩进; 引起注意的是,无论我们是否在边境,它都会被执行.
Tim*_*hns 15
空格不会影响C++运行时行为.(与某些其他语言不同,如Python).
我应该提一下,在你的else块中,你不使用大括号.因此,只有第一个statement(cout << " ";)将成为该else子句的一部分.随后++c;,无论将执行的价值r和c.
请注意,最后一点是主观的,所以请用一粒盐...正如你所看到的,当从if ... else ...块中省略大括号时,可能会产生混淆.有些人认为它会导致更简洁的代码,但许多人(包括我自己)会争辩说你应该总是使用大括号.当您在大型团队中工作时,这一点尤其重要,因为代码会随着时间的推移而增长.我在生产代码中看到很多案例,其中一个if语句缺少大括号,有人在if条款中添加了第二行,而没有记住添加大括号.这没有按预期工作,导致浪费时间调试失败,只是因为省略了括号.
| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |