我最近意识到您可以在 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/