没有中间表达式的三元条件运算符

问题描述 投票:0回答:1

我最近意识到你可以在 GCC 和 clang 中使用三元运算符而无需中间(

?:
?   :
工作),它会将第一个表达式插入到中间:

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

这在标准中的什么地方?我看了一下,没有看到任何东西。

c++ gcc clang conditional-operator
1个回答
21
投票

它根本不符合标准

您所观察到的是 GCC 扩展:

https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html

如果省略它,则其值将从上下文转换为

bool

 之前的第一个操作数获取。
扩展的价值在于不重复副作用并减少源代码大小。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.