码迷,mamicode.com
首页 > 其他好文 > 详细

三目运算符的优先级问题

时间:2017-03-09 21:44:13      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:bsp   .com   那是   com   int   条件运算   规则   顺序   总结   

被群里的一道题给逗乐了,一群人在下面讨论的不可开交,最后总结了一下,纪念纪念,补点基础知识……

 

//原题:求3<8?(9<6?7:5):2>0?4:1的值
//在程序里面运行得到5,那是怎么得到的呢?这才是我们探讨的问题的所在,看演示
int n1 = 3<8?(9<6?7:5):2>0?4:1; //5
int n2 = 3<8?(9>6?7:5):2>0?4:1; //7
int n3 = 3<8?5:2>0?4:1; //5
int n4 = 3>8?5:2>0?4:1; //4
int n5 = 3<8?5:4; //5
int n6 = 3>8?5:4; //4

int n7 = 3>8?5:2>0?4:1; //4
int n8 = 3>8?5:2<0?4:1; //1
//综上输出结果,说明是先算的2>0?4:1得到4,然后再算3>8?5:4得到4.不过这是我根据程序结果推断的

 

那么,对于三目运算符的计算规则到底是怎么样的呢?其实是这样的,这个事要先确定优先级

//步骤:

//求3<8?(9<6?7:5):2>0?4:1
//括号的优先级是最高的,所以先算括号里的(9<6?7:5)得到5,
//然后算式变成 3<8?5:2>0?4:1;
//?:条件运算符,三目运算是从右往左分组计算的,所以先计算2>0?4:1,得到4;
//然后算式变成3<8?5:4,这就很easy啦,直接得到结果5;

明白步骤之后是不是感觉这没一点迷惑性啊,但是不明白计算的优先顺序,就算你能得到正确结果,也是有很大的水分在里面哟,我们要做的就是要透过现象看到本质,一步一步清晰知道结果是这样出来滴!

补充一张图:

 

技术分享


OSFF szy

 

三目运算符的优先级问题

标签:bsp   .com   那是   com   int   条件运算   规则   顺序   总结   

原文地址:http://www.cnblogs.com/rongyao/p/6515757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!