【发布时间】:2016-08-22 01:00:38
【问题描述】:
以下代码:
#include <iostream>
using namespace std;
struct A{int number=10;};
int main()
{
A* a = new A();
cout<<"A val: "<< a==nullptr?"":a->number<<endl;
}
使用 c++11 在 gcc 4.7 上编译给出:
错误:'int'和''类型的无效操作数到二进制'操作符
我不明白为什么,什么是正确的方法呢?我希望空检查尽可能短,因为我希望它们很常见。
【问题讨论】:
-
对于大多数人来说,三元运算符有a surprising low precedence。我的建议:当你不确定它的作用时,避免使用它:你的同事会感谢你。
标签: c++11 ternary-operator cout