c语言switch问题

这题的意义是,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语句中的局部变量的作用域引起的

直到了原因,就可以这样解决:

我要回帖

 

随机推荐