一个条件运算符的使用规范
看下面这段代码
int a = 0;
int b = a ? 1 : 2;
cout << b << endl;
b = (a ? 1 : 2);
cout << b<<endl;
我们的两次输出都是1
但是如果改为
int a = 0;
int b =1+ a ? 1 : 2;
cout << b << endl;
b = 1+ (a ? 1 : 2);
cout << b<<endl;
那么输出就会变成 :
1
3
这因为加法运算的优先级大于条件运算。所以一定要对条件运算符加上括号,防止出现bug。