我知道这是可能的,但使用三元运算符调用函数而不是使用if语句是一种好习惯吗?
if(x){
a();
} else if(y){
b();
} else if(z){
c();
}
而是这样做:
(x) ?
a() :
(y) ?
b() :
(z) ?
c() : 0;
是否存在我不知道的未知问题?
答案 0 :(得分:3)
关于条件运算符如何工作的细节,请参阅C11 Standard,第6.5.15节。
最大的区别在于条件(三元)运算符专门用于赋值。如,
x = (a < b) ? c : d
如果(a < b)
不为零(true),x = c
;否则,x = d
。
需要考虑c
和d
的若干限制(见6.5.15.3)。其中最主要的是c
和d
必须是以下之一:
struct
或union
类型现在所有这些都说明了,你特别没有分配给变量,但这些函数的返回值也需要保持这些约束。
然而,正如在对该问题的评论中指出的那样 - 这仍然牺牲了对简洁性的可读性。这几乎不是最好的做法。
**非常感谢@JensGustedt指出我的答案中的错误并帮助我修复它们!