37 c objective-c ternary-operator conditional-operator
我不认为这是可能的,但显然在Objective C中允许:
int a = b ?: c;
Run Code Online (Sandbox Code Playgroud)
所以你看到他们在这里做的是什么,他们忽略了三元表达式的第二部分,这样如果b非零,则b用作第二部分.
它很聪明但据我所知这是针对K&R C,可能是ANSI C.
如果没有,多年来我一直错过了一个非常聪明的语法技巧......唉!
更新:这是gcc.
Joa*_*son 71
来自http://en.wikipedia.org/wiki/%3F%3A
C的GNU扩展允许省略第二个操作数,并且隐式地使用第一个操作数作为第二个操作数:
Run Code Online (Sandbox Code Playgroud)a = x ? : y;表达式相当于
Run Code Online (Sandbox Code Playgroud)a = x ? x : y;除了如果x是表达式,它只被评估一次.如果评估表达具有副作用,则差异是显着的.