黑马程序员技术交流社区
标题: 条件运算符的运算顺序 [打印本页]
作者: hughwang90 时间: 2014-4-11 19:43
标题: 条件运算符的运算顺序
本帖最后由 hughwang90 于 2014-4-13 14:04 编辑
请问:
条件运算符 e1 ? e2 : e3 ? e4 : e5 的运算顺序是 (e1 ? e2 : e3)? e4 : e5 还是e1 ? e2 : ( e3 ? e4 : e5)
作者: 一只小菜鸟 时间: 2014-4-11 20:22
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;
作者: 微尘•逐梦 时间: 2014-4-11 20:25
e1 ? e2 : ( e3 ? e4 : e5)
作者: 星河鹭起 时间: 2014-4-11 23:41
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;
作者: 从┧靇┟开始 时间: 2014-4-12 00:09
我查了一下运算符的优先级,发现?:属于条件运算符,是从右往左的匹配规则。
换句话说就是遇到了就从右向左算,e1 ? e2 : e3 ? e4 : e5 从右往左套用
(e3?e4:e5)先运算 假设为a,现在变成e1?e2:a,继续从右往左套用,结束。
我新手 不知道这样说法对不对 给个建议呀:)
作者: 星河鹭起 时间: 2014-4-12 13:23
条件运算优先级小于算术运算,而 x=e1 是算术运算,所以先运行x=e1,然后再进行判断
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |