作业帮 > 综合 > 作业

求高手解释C++primer中的一句话

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/08 19:48:56
求高手解释C++primer中的一句话
(对于switch语句,只能在他的最后一个case标号或default标号后面定义变量,制定这个规则是为了避免出现代码跳过变量的定义和初始化的情况).这句话对吗?
我要是在第一个case中就要用到该变量,那么这时候这个变量还没有定义和初始化就要被提前用到了,这不是与上述表述(第一句话)出现矛盾了吗?上述表述说的是哪种情况?求高手指教.第一句话(括号中)来自C++ primer这本书.
我们先来看看switch语句的作用域:
// 作用域1
switch (a)
{
case 0:
// 作用域2
default:
// 作用域3
};
// 作用域4
在“作用域1”定义的变量,在其他地方都可见.
如果在“作用域2”定义的变量,我们的希望是在2,3两个地方可见.
但是按照一般的理解.我如果case 0没有进入,我凭什么认为在作用域3可以用这个变量呢?
但是在“作用域3”定义的变量不会存在这样的问题.
在“作用域4”定义的变量没有异议.
再问: 在作用域3定义的变量,还是属于switch块语句的,在作用域4不可用的是吗? 在switch语句中,再还没有执行到作用域3时,例如这时正在执行作用域2的语句,那么作用域3定义的变量对于作用域2来说也是不可用的对吗?
再答: 在作用域3定义的变量,还是属于switch块语句的,在作用域4不可用的是吗? 是的 在switch语句中,再还没有执行到作用域3时,例如这时正在执行作用域2的语句,那么作用域3定义的变量对于作用域2来说也是不可用的对吗? 如果存在那样的语义答案应该是:是的