您的位置:首页 > 其它

case语句中的变量定义

2013-01-29 21:18 323 查看
需要注意一下几点:

1、case语句的变量声明是在整个switch语句中可见的。

2、case语句中可以变量声明和定义,但在case语句中变量初始化的话有时会产生编译错误,原因是编译器为了避免“不一致”现象。具体解释如下:因为case语句中的变量声明、定义、初始化实在整个switch语句中可见的,变量声明实在编译时完成,而变量初始化需要在执行是完成,所以,如果在一个非最后一个case的case(命名case1)中进行了变量声明加初始化(如int
a=0;),若真正执行的时候switch的条件值是该case后面的某个case(命名case2)的值,则case2中可以看到a的声明,也可以使用啊,但是因为没有执行case1,所以a没有初始化,所以在case2中使用的a并不是“预想的”a,这就产生了不一致。但如果在case1中只有声明或定义,而没有初始化,则不会产生这种不一致,编译时就不会报错。

这个可以通过编译,因为此时在case 'b
'中a不可见(因为a在语句快中),所以不会出现上述的“不一致”现象,因此编译顺利通过。

此时也会顺利通过编译,因为a的定义(初始化)放在了最后一个分支中,由于在case 'b
'后面没有其他分支了,所以同样不会出现上述的“不一致”现象,所以仍然顺利通过编译。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: