-1

可能重复:
三元还是不三元?

今天,在阅读我的 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 语句。

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

4

2 回答 2

3

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

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

于 2012-08-25T22:45:49.967 回答
1

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

于 2012-08-25T22:45:06.160 回答