2012-08-25 22 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

謹慎使用三元運算符。這絕對有用,可以是一個適當的縮寫,但它也可能導致較少可讀的代碼。你的例子演示了這一點