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
'后面没有其他分支了,所以同样不会出现上述的“不一致”现象,所以仍然顺利通过编译。
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
'后面没有其他分支了,所以同样不会出现上述的“不一致”现象,所以仍然顺利通过编译。
相关文章推荐
- case语句中定义变量要加括号
- 在case语句中定义变量的问题
- 关于在case语句中变量的定义
- 在case语句中定义变量的问题
- C语言switch case语句中定义变量问题
- C语言switch case语句中定义变量问题
- C语言switch case语句中定义变量问题
- swtich和case语句中,定义变量要加花括号
- C语言switch case语句中定义变量问题
- 在case语句中定义变量的问题
- switch case语句里面不能定义对象 错误信息:Cannot jump from switch statement to this case..
- C++跳转语句之Goto对变量定义的影响详解
- MSSQL 定义变量及条件语句,循环语句,全局变量的使用
- case语句后面是否可以是const修饰的只读变量呢?
- switch case语句里面定义对象要加上花括号
- 关于怎么在php中定义的sql语句中使用变量
- 数据库存储过程中定义一个变量,通过sql语句在数据表中获取这个变量值的方法。
- VS插件开发——格式化变量定义语句块
- switch语句中case跳过变量初始化的问题
- 主变量 用于动态 SQL 语句、视图定义或者触发器定义中