黑马程序员技术交流社区
标题:
问个奇怪的问题
[打印本页]
作者:
沐子松/kf
时间:
2014-6-18 23:19
标题:
问个奇怪的问题
本帖最后由 沐子松/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!
作者:
luojunwei1992
时间:
2014-6-18 23:23
c=3,因为a+b>3为false,c=++b=3
作者:
沐子松/kf
时间:
2014-6-18 23:27
luojunwei1992 发表于 2014-6-18 23:23
c=3,因为a+b>3为false,c=++b=3
a+b没括号,优先级应该比三目低吧
作者:
倪大大
时间:
2014-6-19 00:01
判断优先级应该低于 +
作者:
felixzr
时间:
2014-6-19 07:47
a+b=3!>3,所以走++b即c=3
作者:
alive
时间:
2014-6-20 01:54
三元运算符就是运算符号啊,肯定先运算括号里面的,再赋值给左边
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2