三目运算符使用时的注意

三目运算符使用起来很方便,但是也容易出错,今天就发现了一处不起眼的错误,通常情况下还不易发现。

看如下表达式:
a = 2 + (c > d)?(c):(d);
本来的意图是将c和d中较大者加2赋值给a,但是语句执行的结果是时钟将c的值赋值给a。

原因是三目运算符的  ? :  的优先级是13,倒数第三,加运算优先级高于它,所以?左边永远为真。

故,三目运算符参与混合运算时一定要在最外层加上括号(通常我们只记得给三个参与运算的数据加括号)。

 

发表评论

邮箱地址不会被公开。 必填项已用*标注