何时何地使用三元运算符?

Sam*_*Sam -1 operators ternary-operator

我经常在书中读到三元运算符(?:),但我不清楚它的最佳实践.它的优缺点或最佳实践是什么?

lur*_*ker 6

三元运算符? :表示if-then-else构造,除了它实际返回一个值.所以代替:

if ( condition )
    x = expression1;
else
    x = expression2;
Run Code Online (Sandbox Code Playgroud)

你可以写:

x = (condition) ? (expression1) : (expression2);
Run Code Online (Sandbox Code Playgroud)

在C,C++,Java等中,你不能写:

x = if (condition) (expression1) else (expression2);
Run Code Online (Sandbox Code Playgroud)

但是,有些语言(如Ruby)允许使用类似的表单,因为Ruby中的语句总是返回一个值,而块的值是块中最后一个语句返回的值.