2012-08-25 20 views
0

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

使用这种方法是否是好习惯?

+0

它更多关于可读性,使用三元运算符可以减少难以理解的代码,特别是如果您使用嵌套的代码。 – Neil

+3

'printf(somefunc()?“\ nFunction Suceeded!”:“\ nFunction Failed!”);' – Vlad

+0

@Vlad这真的很酷 –

回答

3

除了效率之外,还应该使用更可读性更高的一种。

效率包括在内,如果?真的更高效,编译器会自动绝对任意改写陈述if?表达式。为什么不呢?

1

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