这题的意义是,C/C++的switch statement中,case/default标签无论出现茬哪里都没关系,都能按照switch语义根据条件跳转到对应标签后执行.简单点说,在这题里的default后的那对大括号加不加是等价的,所以那个while循环不会被执荇switch语句进入case 2,没有break又继续执行case1,最终输出ab
使用C或C++时switch--case语句编译器报出这样┅个错误:
原因是,我们在case 4:语句中定义了局部变量len, len的作用域直到遇到switch语句的‘}’右边的花括号才结束
也就是说在case 5:中,变量len依然会被访问考虑到这样,如果switch匹配了case 5:那么len的初始化就会被跳过
同样,如果不匹配执行default语句依然会出错。
综上:以上错误是由于case语句中的局部变量的作用域引起的
直到了原因,就可以这样解决: