gpt4 book ai didi

c++ - 对单行 if 或循环使用大括号(即 {})的目的是什么?

转载 作者:bug小助手 更新时间:2023-10-28 01:31:50 24 4
gpt4 key购买 nike

我正在阅读我的 C++ 讲师的一些讲义,他写了以下内容:

  1. Use Indentation // OK
  2. Never rely on operator precedence - Always use parentheses // OK
  3. Always use a { } block - even for a single line // not OK, why ???
  4. Const object on left side of comparison // OK
  5. Use unsigned for variables that are >= 0 // nice trick
  6. Set Pointer to NULL after deletion - Double delete protection // not bad

我不清楚第三种技巧:将一条线放入{ ... }

以这个奇怪的代码为例:

int j = 0;
for (int i = 0 ; i < 100 ; ++i)
{
if (i % 2 == 0)
{
j++;
}
}

并将其替换为:

int j = 0;
for (int i = 0 ; i < 100 ; ++i)
if (i % 2 == 0)
j++;

使用第一个版本有什么好处?

最佳答案

让我们尝试在增加 j 时也修改 i:

int j = 0;
for (int i = 0 ; i < 100 ; ++i)
if (i % 2 == 0)
j++;
i++;

哦不!来自 Python,这看起来不错,但实际上并非如此,因为它相当于:

int j = 0;
for (int i = 0 ; i < 100 ; ++i)
if (i % 2 == 0)
j++;
i++;

当然,这是一个愚蠢的错误,但即使是有经验的程序员也会犯。

另一个很好的理由ta.speot.is's answer 中指出.

第三种我能想到的是嵌套if的:

if (cond1)
if (cond2)
doSomething();

现在,假设您现在想要在 cond1 不满足时 doSomethingElse()(新功能)。所以:

if (cond1)
if (cond2)
doSomething();
else
doSomethingElse();

这显然是错误的,因为 else 与内部 if 相关联。


编辑:由于这引起了一些关注,我将澄清我的观点。我要回答的问题是:

What's the benefit of using the 1st version?

我已经描述过了。有一些好处。但是,IMO,“总是”规则并不总是适用。所以我不完全支持

Always use a { } block - even for a single line // not OK, why ???

我并不是说 总是 使用 {} block 。如果这是一个足够简单的条件和行为,请不要。如果您怀疑有人稍后可能会进来并更改您的代码以添加功能,请这样做。

关于c++ - 对单行 if 或循环使用大括号(即 {})的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com