黑马程序员技术交流社区
标题:
switch (c<10?1:c<25?2:c<35?3:4)该句怎么看
[打印本页]
作者:
李高翔
时间:
2011-11-19 20:31
标题:
switch (c<10?1:c<25?2:c<35?3:4)该句怎么看
public class EXP
{
public static void main(String args[])
{
int c=38;
switch (c<10?1:c<25?2:c<35?3:4)
{
case 1:
System.out.println(" "+c+"℃ 有点冷,要多穿衣服。");
case 2:
System.out.println(" "+c+"℃ 正合适,出去玩吧。");
case 3:
System.out.println(" "+c+"℃ 有点热。");
default:
System.out.println(" "+c+"℃ 太热了!开空调。");
}
}
}
c<10?1:c<25?2:c<35?3:4是从左边开始分析还是右边开始看?
作者:
徐杨
时间:
2011-11-19 20:42
本帖最后由 徐杨 于 2011-11-19 21:04 编辑
这个从左往右看啊
如果小于10 则执行1
如果大于10 则执行后面的语句c<25?2:c<35?3:4
如果小于25 则执行2
如果大于25 则执行后面的语句c<35?3:4
如果小于35 则执行3
如果大于35 则执行4
三元运算符表达式看懂了 这个就很好办
三元运算符 A>B? C:D
A>B成立 则执行C
不成立则执行D
一般用于减少代码行数用的,提高效率
作者:
moonlight
时间:
2011-11-19 20:48
对于你的情况,就是一个表达式,这个值只能是1 2 3 4之间的任何一个int值
switch (c<10?1:c<25?2:c<35?3:4)
你整个表达式的计算结果是int类型,即就是1 2 3 4
对于你的c= 38
c< 10? 1: (c<25?2:c<35?3:4) 因为c<10为假,所以需要后面继续判断
c<25?2:c<35?3:4因为c<10为假,所以需要后面继续判断
c<35? 3: 4因为c<35为假,所以整个式子结果为c< 10? 1: (c<25?2:c<35?3:4) =4
作者:
moonlight
时间:
2011-11-19 20:50
对于你的情况,就是一个表达式,这个值只能是1 2 3 4之间的任何一个int值
switch (c<10?1:c<25?2:c<35?3:4)
你整个表达式的计算结果是int类型,即就是1 2 3 4
对于你的c= 38
c< 10? 1: (c<25?2:c<35?3:4) 因为c<10为假,所以需要后面继续判断
c<25?2:c<35?3:4因为c<10为假,所以需要后面继续判断
c<35? 3: 4因为c<35为假,所以整个式子结果为c< 10? 1: (c<25?2:c<35?3:4) =4
作者:
张冬冬
时间:
2011-11-19 22:32
先不说这代码是怎么执行的,不过一般的java程序员是不会这么写代码的,这样会降低代码的阅读性,很容易产生歧义的,所以最好是分开写。
作者:
804404980
时间:
2011-11-20 00:25
从右往左看。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2