条件运算符使用注意事项
条件运算符在使用过程中需要注意的事项,参考C++ Primer中描述:条件运算符允许我们把简单的if-else 逻辑嵌入到单个表达式当中。
- 关键词一 ,简单,那么使用条件运算符时,力求简单,简单可以避免很多问题,例如运算符优先级的问题,可能的表达式无法分析的问题等等;
举个例子:
在多层嵌套的条件运算符中,如果使用比较复杂的表达式可能会出现问题:
```cpp
vector<string> dengji{ "F","D","C","B","A","A++" };
string chengji{};
int shuru;
auto it = dengji.begin();
cin >> shuru;
if (shuru >= 0 && shuru <= 100)
{
if (shuru == 100)
{
chengji = *(it + 5);
}
if (shuru < 60)
{
chengji = *it;
}
int iu{}, ix{};
iu = shuru / 10; //输入的十位数
ix = shuru % 10; //输入的个位数
iu > 8 ? chengji = *it : iu > 7 ?
chengji = *(it + 1) : iu > 6 ?
chengji = *(it + 2) : iu > 5 ?
chengji = *(it + 3) : false;
ix > 7 ? chengji += '+' : ix < 3 ? chengji += '-' : false;
}
上面的代码可能逻辑不会有太大问题,但是实际上会报错,就算加上括号将复杂的表达式括起来还是会报错,因自身能力所限制,最终没有解决报错。
我自己解决的办法并没有多么高级,只是根据条件运算符的特性——简单,去进行修改
if (shuru == 100)
{
chengji = *(it + 5);
}
if (shuru<60)
{
chengji = *it;
}
int iu{}, ix{};
iu = shuru / 10; //输入的十位数
ix = shuru % 10; //输入的个位数
char dengji_linshi{};
char fuhao_linshi{};
dengji_linshi= iu > 8 ? 'A' : iu > 7 ?
'B' : iu > 6 ?
'C' : iu > 5 ?
'D' : false;
fuhao_linshi=ix > 7 ? '+': ix < 3 ? '-' : false;
chengji += dengji_linshi;
chengji += fuhao_linshi;
此时解决了问题,虽然没有直面问题,但是绕开问题,也学到了不一样的东西。
``