黑马程序员技术交流社区

标题: switch语句中出现三元运算该怎么理解 [打印本页]

作者: 旅行    时间: 2013-12-23 17:48
标题: switch语句中出现三元运算该怎么理解
本帖最后由 旅行 于 2013-12-23 19:13 编辑

int c = 38
                switch(c<10? 1 : c<25? 2 : c<35? 3 : 4)
这个switch里面出现三个三元运算符,我该怎么理解。

还有,怎么样将代码跟别人一样弄在网格里发帖或者回复?


作者: 卖火柴    时间: 2013-12-23 18:32
三元运算符是一个有返回值的表达式,所以不能执行无返回值语句,并且(表达式1 ? 表达式2 : 表达式3)中,表达式2和表达式3的数据类型必须相同.
结果是true JVM默认从左到右读取 格式为 false ?false:(false ?false:true)读到第一个? 就把false作为第一个结果 :后面的作为一个表达式结果
作者: (0.0)’    时间: 2013-12-23 18:40
int c = 38;
                switch(c<10? 1 : c<25? 2 : c<35? 3 : 4)
其实记住格式就行 xxx ? yyy : zzz
1、把这里的 c <10       看作xxx部分
把1       看作  yyy部分
把c<25? 2: c<35 ?  3:4       整体看作 zzz部分
2、然后再继续解剖:
c< 25 ?      看作  xxx部分
把2  看作 yyy部分
把 c<35?      3:4  整体看作zzz部分
3、在解剖最后一次:
c< 35?       看作 xxx部分
把3     看做3部分
把4     看组 4部分
所以结果就是:4
只有抓住格式,就不会晕了
作者: 欢欢    时间: 2013-12-23 19:07
int c = 38;
                switch(c<10? 1 : c<25? 2 : c<35? 3 : 4)
c < 10 为false,所以执行冒号右面的
c < 25 也为false,所以继续执行下一个冒号右边的
c < 35 也为false,所以最后结果为switch( 4 )。

还有,怎么样将代码跟别人一样弄在网格里发帖或者回复:
click“<>”button,然后把代码粘在弹出的对话框中,点提交即可。


作者: 松毛    时间: 2013-12-23 19:11
switch语句中的需要一层一层的来看。c的值初始化为38,先读第一句c<10,结果为false,所以?后面的第二句(即c<25)成立,再来判断38是否小于25,所以节后又为false,则又是?后面的第二句成立(即c<35),继续判读38是否小于35,结果又为false,所以最终结果也是?后面的第二句,即最终结果为4.
在发帖或者回复中有一对<>,即代码,在其中粘贴你的代码,发完贴后,即可出现代码模式(自己称呼的哈!!!)。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2