C++ 这是什么&引用;及&引用;实际调用的序列?

C++ 这是什么&引用;及&引用;实际调用的序列?,c++,idioms,conditional-operator,C++,Idioms,Conditional Operator,这可能是个愚蠢的问题,但我想不出是什么?exp:other_exp序列被调用 例如: int结果=(真)?1 : 0; 我试过使用谷歌机器,但如果不知道它叫什么,就很难用谷歌机器来实现 谢谢 它被称为条件运算符或三值运算符,因为它是一个三值运算符(一个接受3个操作数(参数)的运算符),并且通常是唯一执行此操作的运算符 它也被称为内联if(iif)、三元if或问号运算符 它实际上是一个非常有用的功能,因为它们是表达式,而不是语句,因此可以用于constepr函数、赋值等 C++语法是; logi

这可能是个愚蠢的问题,但我想不出
是什么?exp:other_exp
序列被调用

例如:

int结果=(真)?1 : 0;

我试过使用谷歌机器,但如果不知道它叫什么,就很难用谷歌机器来实现


谢谢

它被称为条件运算符或三值运算符,因为它是一个三值运算符(一个接受3个操作数(参数)的运算符),并且通常是唯一执行此操作的运算符

它也被称为内联if(iif)、三元if或问号运算符

它实际上是一个非常有用的功能,因为它们是表达式,而不是语句,因此可以用于
constepr
函数、赋值等

<> C++语法是;
logical-or-expression ? expression : assignment-expression
它被用作

condition ? 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);

如果else
三元运算符
,则称为
速记


有关更多信息,请参阅此处。

条件运算符或。这可以在谷歌上搜索为“问号冒号运算符”。此外,StackOverflow自己的搜索更严格,可以识别?:字符,在类似的情况下,你可以从C++中学习什么样的书,而不是告诉你它的名字?你应该考虑买一本书。您的本地库可能很少。很好的解释,非常清楚+1实际上,它被定义为逻辑或表达式?表达式:根据标准的赋值表达式,其中赋值表达式可以是条件表达式、抛出表达式或赋值(=、*=、+=等)@ArneMertz;很明显,我读错了BNF,谢谢你的更正,我已经编辑了我的答案。很好的解释,比我需要的更详细,但仍然很清楚。我喜欢你把最后一个注释包括进来。