不带中间表达式的三元运算符
Ternary operator without the middle expression
我最近意识到,你可以在GCC和clang中使用三元运算符,而不需要中间(?:
或? :
有效),它会在中间插入第一个表达式:
// outputs 2
cout << (2 ?: 4);
// outputs 3
cout << (0 ? : 3);
这在标准中的什么位置?我看了看,什么也没看到。
它根本不在标准中。
您观察到的是GCC扩展:https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html
如果省略它,它的值将取自上下文转换为bool
之前的第一个操作数
扩展的价值在于不重复副作用并减少源代码的大小。
相关文章:
- 三元运算符和 if constexpr
- 在 c++ 中三元运算符中不允许继续(关键字)吗?
- 三元运算符在返回语句中给出意外的结果
- 递归中三元运算符的奇怪行为
- 错误:三元运算符无法在对象中正常工作"cout"
- 是否允许三元运算符在C++中计算两个操作数?
- 有条件地选择带有 decltype() 和三元运算符的类型
- 三元运算符在C++中的意外行为
- 有没有办法将 for 循环结果返回到像三元运算符这样的函数中?
- 变量值,在三元运算符之后
- 是否可以在C++中使用三元运算符在 if 语句中选择比较运算符?
- c++中的增量和三元运算符优先级
- C++中三元运算符的意外行为
- 用于返回开关的三元运算符
- 替换模板元编程中的三元运算符
- 三元运算符 '?:' 在 4.9.0 之前的 GCC 版本中推断出不正确的类型?
- 在 std::map 上使用三元运算符和 std::更大的附加参数
- "Do nothing"在三元运算符的其他部分?
- 如何确定三元运算符的返回类型?
- 无法使用三元运算符有条件地分配"istream &"?