c++ - C/C++ : How does this inline if get parsed?

标签 c++ ternary-operator

考虑这段代码:

int main()
{
    cout << true ? "Yes" : "No";
    return 0;
}

它的输出将是 1 ,而不是 YesNo。为什么将 true 发送到输出流而不是 YesNo 字符串?内联 if 的其余部分如何解析?

最佳答案

这与操作顺序有关。这与:

  (cout << true) ? "Yes" : "No";

cout << true返回 ostream& ,它必须转换为 bool 或等价物。 ?:的结果被扔掉了。

如果这看起来很奇怪(为什么这个优先级?),请记住 ostream 的 operator<<是 C++ 代码中引入的重载,它不允许更改优先级。 <<的优先级专为对移位有意义的内容而设计。它作为流媒体运营商的使用要晚得多。

编辑:可能转换为 (void*)使用这个:http://www.cplusplus.com/reference/iostream/ios/operator_voidpt/

关于c++ - C/C++ : How does this inline if get parsed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5977948/

相关文章:

c++ - 通过套接字正确发送 HTTP 响应

java - 如何从旧实例创建新实例?

c++ - 关于STL的进展

c# - 为什么我不能对这个表达式使用三元运算符?

被调用对象不是使用三元的函数或函数指针

python - 在Python中交换字符串的第一个和最后一个字母

c++ - 如何以编程方式设置 wx Panel 派生类的维度?

c++ - 如何检查窗口是否设置了 WS_VISIBLE? (或者如果可见)

c++ - 关于问题 ?和 : in c++

php - 使用三元运算符的 echo 中的 if 语句