这可能是一个低级问题,但我无法弄清楚
例如:
谢谢!
? exp : other_exp
序列被称为什么。例如:
int result = (true) ? 1 : 0;
我已经尝试使用Google搜索引擎,但不知道它的名称很难进行搜索。谢谢!
? exp : other_exp
序列被称为什么。int result = (true) ? 1 : 0;
我已经尝试使用Google搜索引擎,但不知道它的名称很难进行搜索。它被称为条件运算符,或者三元运算符,因为它是三元运算符(一个需要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
Note 3; 有一个非常有趣的用例,是使用条件运算符来决定将值赋给两个变量中的哪一个。
(condition ? x : y) = 1;
请注意,括号是必要的,因为没有它们,您将得到的结果与您期望的不同;
condition ? x : (y = 1);