Pau*_*nta 4 c++ ternary-operator
考虑以下代码:
int main()
{
cout << true ? "Yes" : "No";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它的输出将是1,不会Yes或No.为什么它true被发送到输出流而不是Yes或No字符串?如果得到解析,内联的其余部分如何?
Lou*_*nco 10
它与操作顺序有关.它与以下相同:
(cout << true) ? "Yes" : "No";
Run Code Online (Sandbox Code Playgroud)
cout << true返回一个ostream&,必须转换为bool或等价物.结果?:被扔掉了.
如果这看起来很奇怪(为什么这个优先级?),请记住ostream operator<<是C++代码中引入的重载,它不允许优先级更改.优先级<<是针对位移有意义的.它作为流媒体运营商的使用来得晚得多.
编辑:可能转换为(void*)使用此:http: //www.cplusplus.com/reference/iostream/ios/operator_voidpt/