c++ - 没有中间表达式的三元运算符

标签 c++ gcc clang ternary-operator conditional-operator

我最近意识到您可以在 GCC 和 clang 中使用三元运算符而无需中间(?:?: 有效),它会将第一个表达式插入到中间:

// outputs 2
cout << (2 ?: 4);
// outputs 3
cout << (0 ?  : 3);

这在标准中的什么位置?我看了看,什么也没看到。

最佳答案

根本不符合标准

您观察到的是一个 GCC 扩展:https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html

如果省略它,它的值取自上下文转换为 bool 之前的第一个操作数。
扩展的值(value)在于不重复副作用和减少源代码大小。

关于c++ - 没有中间表达式的三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34559705/

相关文章:

c++ - 让枚举值等同于许多其他值

c++ - 用于嵌入式开发的 Linux 发行版?

gcc - 使用 msp-gcc 的 MSP430 中断例程无法编译

c++ - gcc3 和 gcc4 关于未初始化变量的区别

编译错误 - 已弃用的扩展

c++ - c++ 中的析构函数行为

c++ - 如何获得 -std=c++11 w/libstdc++?

c - 分析编号处理代码 : 28% of time in fegetexcept() & optimal compiler flags?

c++ - 为什么在 Visual Studio 中使用 LLVM+Clang 时未定义 __clang__?

c++ - 如何将自定义类对象放入 CCArray?