这可能是一个傻瓜问题,但我无法弄清楚调用? exp : other_exp
序列是什么。
示例:
int result = (true) ? 1 : 0;
我已经尝试过使用谷歌机器了,但是在不知道它叫什么的情况下Googilize很难做到。
谢谢!
答案 0 :(得分:18)
它被称为条件运算符,或者可选地称为三元运算符,因为它是一个三元运算符(一个运算符,它接受3个操作数(参数)),并且它通常是唯一的运算符,它可以做到这一点。
它也被称为内联if(iif),三元if或问号运算符。
它实际上是一个非常有用的功能,因为它们是表达式而不是语句,因此可以用于constexpr
函数,分配等。
C ++语法是;
logical-or-expression ? expression : assignment-expression
用作;
condition ? condition_is_true_expression : condition_is_false_expression
即,如果condition
求值为true
,则表达式求值为condition_is_true_expression
,否则表达式求值为condition_is_false_expression
。
因此,在您的情况下,始终会为result
分配值1
。
注1;在使用条件运算符时,人们常犯的一个错误就是忘记它有一个相当低的operator precedence。
注2;某些函数式语言不提供此运算符,因为它们具有表达式'if...else'
构造,例如OCaml;
let value = if b then 1 else 2
注3;一个有趣的用例,完全有效的是使用条件运算符来决定将两个变量中的哪一个赋值给。
(condition ? x : y) = 1;
请注意括号是必要的,因为这是你没有它们的结果;
condition ? x : (y = 1);
答案 1 :(得分:2)
他们被称为shorthand if-else
或ternary operators
。
有关详细信息,请参阅此article。