以前很少用条件运算符?:,基本上都用if-else条件语句来完成判断。
调了一晚上Doolittle算法的程序,因为看别人程序里写了条件运算符,所以我也就用上了,结果程序一直结果不对,哪哪儿都看不出问题。最后终于在给条件运算符表达式外面加上了一层括号后,程序运行出了正确的结果。
惊异于给三目运算表达式加上括号后程序结果就正确了这一事实,回过头去查了查运算符的优先级,才发现三目运算符的优先级非常低,在《C++ Primer Plus》附录给出的优先级表中,居然只排到了第15级,也就是说基本上除了赋值操作,其它任何一种运算符的优先级都高于三目运算符。
这也提醒我们,在使用三目运算符的时候一定不要嫌麻烦不加括号,失之毫厘差之千里啊。在写表达式的时候,切记用括号交代清楚优先级关系是一种稳妥而规范的方法。