在case语句中定义变量的问题
来源:互联网 发布:淘宝贷款80万还不上 编辑:程序博客网 时间:2024/05/31 11:03
- switch(n)
- {
- case 1:int i=0;break;
- case 2:....;break;
- case 3:....;break;
- default:.......
- }
编译器会报错:
- 错误: 跳过了‘int i’的初始化
如果我们这样写(在变量定义的地方加上"{}"):
- switch(n)
- {
- case 1:{int i=0;}break;
- case 2:....;break;
- case 3:....;break;
- default:.......
- }
编译器就不会报错。
原因如下:
C++编译器考虑了如下的情况:倘若在case 1中定义了一个变量,由于case 1和case 2都在同一个作用域,因此case 2可以调用case 1的变量;如果case 2这样做了,看看会发生什么情况——n的值为2,那么将会跳过case 1而执行case 2 ,但case 2调用的case 1的变量还没有定义,因此会发生错误!
为了防止这样情况,就需要在case 1中定义变量的部分加上"{}",以限制变量的作用域(防止被case 2调用),从而防止出错。
假设case 2一定要调用case 1中的变量,那就把这个变量定义成全局变量。
0 0
- 在case语句中定义变量的问题
- 在case语句中定义变量的问题
- 在case语句中定义变量的问题
- 关于在case语句中变量的定义
- C++:在switch的case中定义变量的问题
- C语言switch case语句中定义变量问题
- 在case中定义变量
- switch中case中变量定义的问题
- 关于在case语句中添加局部变量的问题(error C2360)
- switch语句中case跳过变量初始化的问题
- case语句中的变量定义
- case语句中定义变量要加括号
- case语句跳过变量初始化的问题
- switch语句中case语句中变量初始化问题!
- switch语句中在case块里声明变量会遇到提示“Expected expression before..."的问题
- switch语句中在case块里声明变量会遇到提示“Expected expression before..."的问题
- switch语句中在case块里声明变量会遇到提示“Expected expression before..."的问题
- 枚举类在switch...case语句中使用的问题
- atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg
- 欧几里德与扩展欧几里德算法
- poj 3264线段树基础
- 图论-最短路问题及MATLAB程序实现
- Hdmi edid 数据解析
- 在case语句中定义变量的问题
- hdu4893(线段树成段更新)
- BUPT2014新生暑假个人排位赛08
- 淘宝面试题
- typedef #define
- 筷子 - NJUPT 1851 dp
- POJ 2503 Babelfish map做法
- C++中的单例模式
- 腾讯面试题