int c=2
switch(c){
case 0:.................
case 1:.................
case 2:...................
case 3:...............
case 4:................
default:..............
}
如果标号是用来和表达式进行判断的话,编译器能略过case0,case1,而case 2如果不加break的话编译器却不能略过标号3,而是做case3 中的内容,为啥啊?谢谢啦

解决方案 »

  1.   

    不为什么。switch就是这么定义的。当没有break的时候,会继续执行。
      

  2.   

    我也不知道为什么可能是因为你不break它就没办法跳出这个语句,也就必须从你选择的那句一直顺序执行到最后。造成不恰当的程序运行结果。所以哥们还是加上吧。
      

  3.   

    以前在c中,反汇编看了下:
    switch可以根据 后面表达式的值 直接跳转到某个case语句;
    当执行某个case后面的语句时,一条一条执行,不加break程序流程是不会改变的,所以不会略过后面的语句我想 java(me暑假才刚java,不知对不对了??)中的执行应该是差不多吧