我可以使用(?:)运算符定义变量。但是为什么我不能将它用作if-else语句来执行基于条件的语句?
我尝试了以下操作:
char first = queue.remove();
(first == 'W') ? women++ : men++;
但没效果。
答案 0 :(得分:4)
这称为三元运算符,它会产生表达式,而不是语句。分号遵循陈述。
以下是有效的,因为它既是语句又是表达式(如果foo
的返回类型为void,那么它只是一个语句):
foo();
以下内容无效,原因与您的三元运算符示例无效(文字字符串只是表达式)相同:
"xyzzy";
如果要根据布尔值执行一个或另一个语句,请使用if-then语句。如果希望表达式根据布尔值取一个值或另一个值,请使用三元运算符。它们不可互换。
答案 1 :(得分:0)
虽然if-statement
允许逻辑代码流,但三元运算符实际上是一个operation,它需要三个操作数。三元运算符导致表达式,而不是语句。