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

© 沐子松/kf 中级黑马   /  2014-6-18 23:19  /  574 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沐子松/kf 于 2014-6-18 23:26 编辑

int a=1,b=2;
int c=(a+b>3?a++:++b);System.out.println(a);
System.out.println(b);
System.out.println(c);

结果:1
3
3



提问:为什么c=3
情况1:本人觉的“a+三目运算”,应该先执行三目运算,再把结果+上a!
那么, b>3?a++:++b的结果应该是3,那么c=a+3应该是4才对,还是说在三目运算中++b并没有先执行,b的结果还是2?
情况2:a+b先执行,结果等于3,再进行三目运算,返回++b的结果赋值给c,所以c=3!

5 个回复

倒序浏览
luojunwei1992 来自手机 中级黑马 2014-6-18 23:23:42
沙发
c=3,因为a+b>3为false,c=++b=3

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
luojunwei1992 发表于 2014-6-18 23:23
c=3,因为a+b>3为false,c=++b=3

a+b没括号,优先级应该比三目低吧
回复 使用道具 举报
判断优先级应该低于 +
回复 使用道具 举报
a+b=3!>3,所以走++b即c=3
回复 使用道具 举报
alive 来自手机 中级黑马 2014-6-20 01:54:28
地板
三元运算符就是运算符号啊,肯定先运算括号里面的,再赋值给左边
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马