今天,在阅读我的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 :(得分:3)
除了效率之外,你应该使用更具可读性的那些。
效率包括,如果?
确实更高效,编译器肯定会自动将任何if
语句重写为?
表达式。为什么不呢?
答案 1 :(得分:1)
谨慎使用三元运算符。它绝对有用,可以是一个合适的缩写,但它也可能导致代码不太可读。您的示例演示了这一点。