关于switch语句的流程,请大神,老师详细叙述下switch(表达式){case 常量表达式1: case 常量表达式2: case 常量表达式3: 语句序列1;case 常量表达式4: 语句序列2;case 常量表达式5: 语句序列3;break;default:
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 23:26:21
关于switch语句的流程,请大神,老师详细叙述下switch(表达式){case 常量表达式1: case 常量表达式2: case 常量表达式3: 语句序列1;case 常量表达式4: 语句序列2;case 常量表达式5: 语句序列3;break;default:
关于switch语句的流程,请大神,老师详细叙述下
switch(表达式)
{
case 常量表达式1:
case 常量表达式2:
case 常量表达式3: 语句序列1;
case 常量表达式4: 语句序列2;
case 常量表达式5: 语句序列3;
break;
default: 语句序列n+1
}
先阐述学生的理解和疑问: 第一项的switch(表达式)表达式可以是一个变量常量或者是一段符合C语言的公式,有了这个就可以判断对应这个“表达式”下面的值,是否符合自己要判断的. switch下面的大括号就不用学生表达了.case 常量表达式1和case 常量表达式2,为空,只有case 常量表达式3为语句序列1,书本的描述是: 如果switch表达式的多个值需要仔细相同的语句,可以用下面的语句格式,也就是case 常量表达式1到case 常量表达式3,我的理解是判断case 常量表达式1成立时,执行语句序列1,case 常量表达式2成立时,执行语句序列1,case 常量表达式3成立时,也执行语句序列1,学生第一个疑问产生了:如果说case 常量表达式1成立执行语句序列1,执行完后是跳case 常量表达式4,还是说跳到case 常量表达式2,依次继续判断?
break这个我知道,但执行到这个就跳出switch语句
defaultt 这个不是很了解,书面描述是就是当case都不满足时,程序会执行default中的语句,如果把case 常量表达式5 下面的break给default这后面,公式的意思应该是上面的case都不成立时执行default后面的语句,既然是break就是跳出了.这时第二个疑问产生了:default后面的语句序列n+1是什么意思 ,执行上面的语句序列,这个+1是什么意思呢?
关于switch语句的流程,请大神,老师详细叙述下switch(表达式){case 常量表达式1: case 常量表达式2: case 常量表达式3: 语句序列1;case 常量表达式4: 语句序列2;case 常量表达式5: 语句序列3;break;default:
问题太多,难得打字一一回应,我直接告诉你switch 语句的工作原理,你的问题就不会有了.
对switch语句来说,你可以先不考虑case,最终的代码其实是从上到下顺序执行的.
像你的,代码其实是 :
语句序列1;
语句序列2;
语句序列3;
break;
语句序列n+1;
所以,你马上可以知道,如果没有break会发生什么了,就是下面的代码会一直执行到末尾.
那么case 里面的条件怎么体现?其实在编译时,编译器会建立一个映射关系,它会通过swicth 表达式的结果,来查找一个内部维护的由结果到代码的映射关系.比如目前的情况,如switch的值为常量表达式4,那么结果是,直接goto 到 语句序列2; 的开始处.
所以switch case 其实就是在前面编译器生成代码来判断要跳转到哪里执行而已.那么default 也很好理解了,如果查找不到合适的匹配,就goto到 Default 的代码处呗.
整个过程就是这样,这很清楚了吧?