【问题标题】:Assignment of a value, followed by comparison in "if" statement's condition in C [closed]赋值,然后在 C 中的“if”语句条件中进行比较 [关闭]
【发布时间】:2013-04-18 22:07:59
【问题描述】:

我想用以下逻辑编写一些代码。从清晰和简洁的角度来看,第一种方法是否比其他两种方法更好?

if(kErrNone != (cs_error = get_last_error(component)))
{
    /* Do something. */
}


if((cs_error = get_last_error(component)) != kErrNone)
{
    /* Do something. */
}


cs_error = get_last_error(component);
if(cs_error != kErrNone)
{
    /* Do something. */
}

【问题讨论】:

  • 我会使用第三种方式。 if 块条件下的赋值很容易被误认为是比较。
  • 第一个的好处是如果你不小心赋值,编译器会标记一个左值赋值错误。不过,我更喜欢第 3 种 - 犯错的机会最少。

标签: c if-statement coding-style


【解决方案1】:

对我来说,这是第三个。因为条件更容易评估。

【讨论】:

    【解决方案2】:

    从简洁的角度来看,前两个 if 块明显优于第三个。

    事实上,第一个 if 和第二个 if 之间没有显着差异,因为您只是更改了比较表达式的两侧。

    第三个不必要地添加了一个语句,因为对 cs_error 的赋值可以巧妙地组合到 if 块中。但是,是的,如果您对大括号不小心,就有可能出错。

    【讨论】:

      猜你喜欢
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 2018-07-26
      • 2016-09-07
      • 2019-09-15
      • 2016-07-27
      相关资源
      最近更新 更多