switch语句中case语句中变量初始化问题!
来源:互联网 发布:三维设计制图软件 编辑:程序博客网 时间:2024/05/16 05:56
#include<stdio.h>int main(){ int i=1; switch(i) { case 1: int a=1; printf("%d/n",a); break; case 2: printf("不可能的结果"); break; default:break; } return 0;}
编译出现[Error] D:/文件包/C-Free/Temp/未命名1.cpp:11: error: jump to case label
[Error] D:/文件包/C-Free/Temp/未命名1.cpp:8: error: crosses initialization of `int a'
解决方案1:
#include<stdio.h>int main(){ int i=1; switch(i) { case 1: { int a=1; printf("%d/n",a); } break; case 2: printf("不可能的结果"); break; default:break; } return 0;}
方案2:
#include<stdio.h>void f();int main(){ int i=1; switch(i) { case 1: f(); break; case 2: printf("不可能的结果"); break; default:break; } return 0;}void f(){ int a=1; printf("%d/n",a);}
原因: for
int a = 1;
the compiler knows Arnald needs a integer a with 1 as its
initial value. And it also found it is possible that in default
region, the a can be used. Since the compiler cannot make sure
the a will be initialized correctly for every flag, then it just
issue an error(warning for some other compilers), and hope you
can handle it...
And if you remove the default part, the error will dispear,
since there is no initialization *skip* now...
Just put them in the case scope if you really want it...
- switch语句中case语句中变量初始化问题!
- switch语句中case跳过变量初始化的问题
- 关于C/C++中switch语句case中变量不能初始化赋值的问题
- C语言switch case语句中定义变量问题
- switch case中初始化变量问题
- switch-case语句中,case下的语句问题
- switch语句中得case
- switch-case中变量的初始化
- 枚举类在switch...case语句中使用的问题
- case语句跳过变量初始化的问题
- python中没有switch/case语句
- switch 语句中省略号与 case 范围
- switch中case语句的可用类型
- 为什么Python中没有Switch/Case语句?
- java switch语句中case穿透
- Java中switch case 语句总结
- C++ 中 switch case语句 处理字符串
- Java中Switch Case语句的用法
- 链栈的实现
- BE 名词解释
- mysqldump 命令选项解析
- 如何使用VirtualBox的共享文件夹
- OpenGL视角控制
- switch语句中case语句中变量初始化问题!
- 网络通信过程
- 10.3
- Calling Extraterrestrial Intelligence Again
- js常用代码收集1
- JS常用代码收集2
- JS常用代码收集3
- 用Eclipse开发PHP项目
- 网游与管理理念