三目运算符使用时的注意

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

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

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

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

 

分享到: 更多
版权申明:

本站保留所有原创文章的版权,本站地址:奔跑的博客[http://www.elecbench.com]

原创文章转载时请注明出处,并添加文章所在页面的链接:http://www.elecbench.com/%e4%b8%89%e7%9b%ae%e8%bf%90%e7%ae%97%e7%ac%a6%e4%bd%bf%e7%94%a8%e6%97%b6%e7%9a%84%e6%b3%a8%e6%84%8f/

本站所有 2010年3月4日 以后发表、未标明为“转载”的文章均是本站原创。

发表评论


(设置自己的个性头像)

*

申请属于你的免费顶级域名