应该吗?操作员更频繁使用?

时间:2012-08-25 22:42:00

标签: c operator-keyword ternary-operator

  

可能重复:
  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语句。

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

2 个答案:

答案 0 :(得分:3)

除了效率之外,你应该使用更具可读性的那些。

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

答案 1 :(得分:1)

谨慎使用三元运算符。它绝对有用,可以是一个合适的缩写,但它也可能导致代码不太可读。您的示例演示了这一点。