【问题标题】:Should the ? Operator Be Used More Often? [duplicate]应该吗?运算符使用频率更高? [复制]
【发布时间】:2012-08-21 00:15:09
【问题描述】:

可能重复:
To ternary or not to ternary?

今天,在阅读我的 C 书籍时,我偶然发现了一个小宝石:? 运算符。它是一个三元运算符,其作用类似于基于天气的 if else 语句或语句是真还是假。

显然使用? 运算符应该更有效。

以下代码使用 if / else 语句(假设 somefunc 在失败时返回 NULL):

foo = somefunc();
if(foo) printf("\nFunction Suceeded!");
else printf("\nFunction Failed!");

此代码与第一个相同,但使用 ? 运算符:

somefunc() ? printf("\nFunction Suceeded!") : printf("\nFunction Failed!");

我知道这在大多数情况下都没有用,但是我知道我已经看到了无数可以轻松使用它来代替 if / else 语句的实例。

使用这种方法是个好习惯吗?

【问题讨论】:

  • 更多的是关于可读性,使用三元运算符可以减少难以理解的代码,特别是如果您使用嵌套的。
  • printf(somefunc() ? "\nFunction Suceeded!" : "\nFunction Failed!");
  • @Vlad 太酷了

标签: c operator-keyword ternary-operator


【解决方案1】:

抛开效率不谈,你应该使用更具可读性的那个。

包括效率,如果?真的更有效,编译器肯定会自动将任何if 语句重写为? 表达式。为什么不呢?

【讨论】:

    【解决方案2】:

    谨慎使用三元运算符。它绝对有用,可以作为适当的缩写,但它也可能导致代码可读性降低。你的例子证明了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2010-09-08
      • 2013-10-27
      • 2014-07-15
      • 2014-11-14
      • 2013-06-15
      • 2021-03-26
      相关资源
      最近更新 更多