"?"和":"序列实际上叫什么?

What is the "?" and ":" sequence actually called?

本文关键字:什么 实际上      更新时间:2023-10-16

这可能是一个愚蠢的问题,但我无法弄清楚? exp : other_exp序列叫什么。

例:

int result = (true) ? 1 : 0;

我试过使用谷歌机器,但很难在不知道它叫什么的情况下对某件事进行谷歌化。

谢谢!

它被称为条件运算符或交替的三元运算符,因为它是三元运算符(接受 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;使用条件运算符时常犯的一个错误是忘记了它的运算符优先级相当低。

注2;某些函数式语言不提供此运算符,因为它们具有表达式'if...else'构造,例如 OCaml;

let value = if b then 1 else 2

注3;一个非常有效的有趣用例是使用条件运算符来决定将值分配给两个变量中的哪一个。

(condition ? x : y) = 1;

请注意括号是必要的,因为这确实是没有它们得到的;

condition ? x : (y = 1);

它们被称为shorthand if-elseternary operators

有关详细信息,请参阅此文章。