【发布时间】:2016-04-06 05:01:43
【问题描述】:
我最近意识到您可以在 GCC 和 clang 中使用三元运算符而无需中间(?: 或 ? : 有效),它会将第一个表达式插入中间:
// outputs 2
cout << (2 ?: 4);
// outputs 3
cout << (0 ? : 3);
这在标准中的什么地方?我看了看,什么也没看到。
【问题讨论】:
-
它不会在中间插入第一个表达式。它使用中间第一个表达式的result。所以如果第一个表达式是一个函数,这个函数不会被执行两次。
标签: c++ gcc clang ternary-operator conditional-operator