就在刚才我练习switch语句,看到这样一段代码- int x = 2,y=3;
- switch(x)
- {
- default:
- y++;
- case 3:
- y++;
- case 4:
- y++;
- }
- System.out.println("y="+y);
复制代码 我分析了一下,结果应该是6,于是呢,为了验证我的判断,我就编译了一下,输出了结果,但是y=5,我不信邪的检查了好几遍,运行了五六遍,将default的位置改动了好几遍,结果一直是5,我的人生观,价值观当时就颠覆了,将题目发给了朋友,回复结果是6,我告诉他我这编译完运行结果是5啊,朋友也抑郁了,于是我怕我弄错了,开始在网上找switch语句的执行顺序,得到的答案是
switch表达式的值决定选择哪个case分支,如果找不到相应的分支,就直接从"default" 开始输出。
当程序执行一条case语句后,因为例子中的case分支中没有break 和return语句,所以程序会执行紧接于其后的语句
对应上面的代码,结果应该是6啊,这到底是怎么回事呢!!
终于,我看了一眼dos编译的地方,悲催的我把文件名写错了 Test4 写成了Test ,这次血的教训,让我知道了意义命名的重要性,今后一定要注意。 |