一般来说,?:
运算符不能替代经典的if() ... else() ...
. 如果两个运算符(和条件)都是值或返回值的表达式,则可以这样使用它。您不能将它们与goto
,break
或之类的语句一起使用continue
。
以下是可能的:
condition ? dothis() : dothat(); // there's no assignment, but it's still valid
var = condition ? dothis() : othervar;
condition ? (var=4, othervar=3) : (somevar = 1);
但是你不能包含任何不是表达式的东西(即没有任何价值或结果的东西):
condition ? continue : break; // statements letting the execution continue somewhere else
condition ? {var = 4; othervar = 3;} : dothat(); // trying to inline scopes/multiple exressions
var = condition ? while(var) {var--;} : 5; // similar, inlining a complete loop
可以完成最后这些示例,但它们需要您使用if()
或函数体来调用:
if (condition) continue; else break;
condition ? (var = 4, var = 3) : dothat();
var = condition ? dotheloop(var) : 5; // ok, this could be 'var = condition ? 0 : 5;' but... example code