黑马程序员技术交流社区

标题: 有关于++ 的顺序问题,搞不太懂 [打印本页]

作者: 梅菜扣肉盖饭    时间: 2016-1-16 23:40
标题: 有关于++ 的顺序问题,搞不太懂
int x=2,y=3;
switch(x)
{
        default:
                y++;
        case 3:
                y++;
        case 4:
                y++;
}
System.out.println("y="+y);
A.  3
B.  4
C.  5
D.  6


我知道有case穿透,   最后的y++是  先赋值,再自增,赋值是5,而后自增到6,但是为什么输出打印的时候输出的是6啊- - 不是先赋值么
作者: 梅菜扣肉盖饭    时间: 2016-1-16 23:43
class  Noname1{
        public static void main(String[] args) {
                //9.下面程序执行的结果是?(  )
                int x=2,y=3;
switch(x)
{
        default:
                y++;
        case 3:
                y++;
        case 4:
                y++;
        System.out.println(y);
               
}
System.out.println("y="+y);


                System.out.println("Hello World!");
        }
}
我加了一句打印最后一个case之后接着的y值,输出的还是6
那么先赋值,赋值的5跑到哪里去了,怎么才能输出出5呢
作者: 洋葱头头    时间: 2016-1-17 17:51
加个break把 你就能得到5 了
作者: 擎天柱    时间: 2016-1-17 18:09
前置++与后置++单独用时相当于y=y+1,没有先后顺序
作者: yi651312197    时间: 2016-1-17 21:24
case穿透是什么?
作者: the_way    时间: 2016-1-18 00:09
因为你这里++运算符是单独使用的 每次都是表示y=y+1
所以最后的y=y+1+1+1=6
如果你改成这样
int x=2,y=3;
switch(x)
{
         default:
                 y++;
         case 3:
                 y++;
         case 4:
         int z=y++;
}
System.out.println("y="+z);

那这个时候z就是5,输出也是y=5
作者: qt520    时间: 2016-1-18 08:11
学习了,对++理解还不够
作者: 542826323    时间: 2016-1-18 09:12
楼主的答案应该是4吧。
作者: 横溢天使    时间: 2016-1-18 09:23
switch语句每个情况后边应该加个break的,那样就不会出现现在的情况




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