C语言中三目运算符与其他运算符混用时容易忽略优先级的问题

c = a + (CONST > b)?(CONST):(b);

观察上面的表达式,我们会简单的认为先计算(CONST > b)?(CONST):(b),然后其结果与a相加,赋值给从。但实际的执行顺序是先执行 a + (CONST > b),其结果再参与到三目运算符的运算,所以如果a + (CONST > b)的结果不为零,则c始终等于CONST。

正确的写法是把三目运算符表达式再用一个括号括起来。

分享到: 更多
版权申明:

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

原创文章转载时请注明出处,并添加文章所在页面的链接:http://www.elecbench.com/c%e8%af%ad%e8%a8%80%e4%b8%ad%e4%b8%89%e7%9b%ae%e8%bf%90%e7%ae%97%e7%ac%a6%e4%b8%8e%e5%85%b6%e4%bb%96%e8%bf%90%e7%ae%97%e7%ac%a6%e6%b7%b7%e7%94%a8%e6%97%b6%e5%ae%b9%e6%98%93%e5%bf%bd%e7%95%a5%e4%bc%98/

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

发表评论


(设置自己的个性头像)

*

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