"?"和":"序列实际上叫什么?
What is the "?" and ":" sequence actually called?
这可能是一个愚蠢的问题,但我无法弄清楚? 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-else
或ternary operators
。
有关详细信息,请参阅此文章。
相关文章:
- "delete"在 C++ 中实际上做了什么?
- 您好,我实际上想了解以下代码.有人可以详细说明代码它到底在做什么吗?为什么它会在第 31 行崩溃
- *(int*)&data[18]在这段代码中实际上做了什么?
- mOffsetMatrix在Assimp中实际上做了什么?
- 当我们在 C++ 中说"initialize the object"时,它实际上意味着什么?
- C++ 中向量的 .size() 实际上有什么作用?
- 'return *this'实际上做了什么?
- CPACK_DEB_PACKAGE_COMPONENT实际上做了什么
- 声明是否无效()合法,它实际上是什么?
- 在 IUnknown 中添加和发布,它们实际上做了什么?
- 实际上,什么是负数的模
- vk::D eviceQueueCreateFlags() 实际上做了什么?
- 什么时候 constexpr 实际上不是 constexpr
- C++:去引用实际上在做什么
- boost::asio::io_service::run() 实际上做了什么
- C 如果实际上是继承了类,则内部发生了什么
- 无法理解C++中的枚举,它们实际上是什么?
- 当调用带有警告"control reaches end of non-void function"的函数时,(实际上)会发生什么?
- 实际上什么返回类型有一个新的
- glutswapbuffers实际上做了什么