求高手解释C++primer中的一句话(对于switch语句,只能在他的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳过变量的定义和初始化的情况).这句话对吗?我要是在

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 06:15:59
求高手解释C++primer中的一句话(对于switch语句,只能在他的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳过变量的定义和初始化的情况).这句话对吗?我要是在

求高手解释C++primer中的一句话(对于switch语句,只能在他的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳过变量的定义和初始化的情况).这句话对吗?我要是在
求高手解释C++primer中的一句话
(对于switch语句,只能在他的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳过变量的定义和初始化的情况).这句话对吗?
我要是在第一个case中就要用到该变量,那么这时候这个变量还没有定义和初始化就要被提前用到了,这不是与上述表述(第一句话)出现矛盾了吗?上述表述说的是哪种情况?求高手指教.第一句话(括号中)来自C++ primer这本书.

求高手解释C++primer中的一句话(对于switch语句,只能在他的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳过变量的定义和初始化的情况).这句话对吗?我要是在
我们先来看看switch语句的作用域:
// 作用域1
switch (a)
{
case 0:
// 作用域2
default:
// 作用域3
};
// 作用域4
在“作用域1”定义的变量,在其他地方都可见.
如果在“作用域2”定义的变量,我们的希望是在2,3两个地方可见.
但是按照一般的理解.我如果case 0没有进入,我凭什么认为在作用域3可以用这个变量呢?
但是在“作用域3”定义的变量不会存在这样的问题.
在“作用域4”定义的变量没有异议.