不带中间表达式的三元运算符

Ternary operator without the middle expression

本文关键字:三元 运算符 中间 表达式      更新时间:2023-10-16

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

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

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

它根本不在标准

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

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