关于switch语句的流程,请大神,老师详细叙述下

2024-12-04 12:00:16
推荐回答(2个)
回答1:

问题太多,难得打字一一回应,我直接告诉你switch 语句的工作原理,你的问题就不会有了。
对switch语句来说,你可以先不考虑case,最终的代码其实是从上到下顺序执行的。

像你的,代码其实是 :

语句序列1;

语句序列2;

语句序列3;

break;
语句序列n+1;

所以,你马上可以知道,如果没有break会发生什么圆和姿了,就是下面的代码会一直执行到末尾。
那么case 里面的条件怎么棚橘体现?其实在编译时,编译器会建立一个映射关系,它会通过swicth 表达式的结果,来查找一个内部维护的由结果到代码的映射关系。比如目前的情况,如switch的值为常量表达式4,那么结果是,橘绝直接goto 到 语句序列2; 的开始处。

所以switch case 其实就是在前面编译器生成代码来判断要跳转到哪里执行而已。那么default 也很好理解了,如果查找不到合适的匹配,就goto到 Default 的代码处呗。
整个过程就是这样,这很清楚了吧?

回答2:

这只是说明如果if 里面差消带的表达式不满足所有的case
就执行第n+1条语桥码句吧,你是不是省略了default前面的省略号
前面应该有n条语句序列虚芦的。