A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hughwang90 中级黑马   /  2014-4-11 19:43  /  1507 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hughwang90 于 2014-4-13 14:04 编辑

请问:
          条件运算符  e1 ? e2 : e3 ? e4 : e5  的运算顺序是 (e1 ? e2 : e3)? e4 : e5 还是e1 ? e2 : ( e3 ? e4 : e5)   

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

5 个回复

倒序浏览
int x=0? 3 : 1? 9:4;
输出x=9;
int x=1? 3 : 1? 9:4;
输出x=3;
所以应该是int x=e1?(e2) :  (e3?e4:e5)
->当e1=0时,执行后面的e3?e4:e5,再根据e3判断x的值
->当e1=1时,X的值=e2;

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
e1 ? e2 : ( e3 ? e4 : e5)
回复 使用道具 举报
int x = e1 ? e2 : e3 ? e4 : e5  

我的看法是首先判断e1是否为真,如果e1为真,则x=e2,后面的不再进行运算:
   如果e1为假,则x=e3,然后再判断e3是否为真,
   如果e3为真,e4就覆盖e3,x=e4,如果e3为假,则e5覆盖e3,x=e5;

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
我查了一下运算符的优先级,发现?:属于条件运算符,是从右往左的匹配规则。
换句话说就是遇到了就从右向左算,e1 ? e2 : e3 ? e4 : e5    从右往左套用
(e3?e4:e5)先运算 假设为a,现在变成e1?e2:a,继续从右往左套用,结束。
我新手 不知道这样说法对不对  给个建议呀:)
回复 使用道具 举报
从┧靇┟开始 发表于 2014-4-12 00:09
我查了一下运算符的优先级,发现?:属于条件运算符,是从右往左的匹配规则。
换句话说就是遇到了就从右向 ...

条件运算优先级小于算术运算,而 x=e1 是算术运算,所以先运行x=e1,然后再进行判断
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马