读c语言深度剖析 -- switch case
2011-06-21 21:35
204 查看
先说一个现象 有时候在switch中定义变量没有问题,有时候会报错。
百度得知: 基本功不到家.
原来只是加不加括号的区别。
因为C++中变量的作用域是相邻的两个大括号 例子如下
int Val;
switch(Val)
{
case 1:
int i = 1;
break;
case 2:
break;
default:
break;
}
其中case1 后边的变量 i 的作用域是switch的两个大括号
vc6 直接编译出错
error C2360: initialization of 'i' is skipped by 'case' label
: see declaration of 'i'
error C2361: initialization of 'i' is skipped by 'default' label
: see declaration of 'i'
case.exe - 2 error(s), 0 warning(s)
错误很明显 就是 程序 会跳过i的声明 定义语句
解决方法 加个大括号 限制变量的作用域 即可
int Val;
switch(Val)
{
case 1:
{int i = 1;}
break;
case 2:
break;
default:
break;
}
既然有了if、else组合为什么还需要switch、case组合呢?
if、else一般表示两个分支或是嵌套表示少量的分支,但如果分支很多的话……还是用
switch、case组合吧。其基本格式为:
switch(variable)
{
case Value1:
//program code (这里的代码尽量不要超过20行。可以写成子函数调子函数)
case 后面可以是枚举类型整形,包括bit,int,long。在C++里的话用字符也可以,
字符在内存中是以 asc 码存放的
比如case 'c',因为字符在内存里是用一个整数来表示的,也就是传说中的ASC码
break; 每个case语句的结尾绝对不要忘了加break
case Value2:
//program code
break;
case Value3:
//program code
break;
…
default: 最后必须使用default分支。即使程序真的不需要default处理,也应该保留
break; 把default子句只用于检查真正的默认情况。(别为了少敲代码而使用default做为最后一种情况)
这样将失去case语句的标号所提供的自说明功能,而且也丧失了使用default子句处理错误情况的能力。
}
百度得知: 基本功不到家.
原来只是加不加括号的区别。
因为C++中变量的作用域是相邻的两个大括号 例子如下
int Val;
switch(Val)
{
case 1:
int i = 1;
break;
case 2:
break;
default:
break;
}
其中case1 后边的变量 i 的作用域是switch的两个大括号
vc6 直接编译出错
error C2360: initialization of 'i' is skipped by 'case' label
: see declaration of 'i'
error C2361: initialization of 'i' is skipped by 'default' label
: see declaration of 'i'
case.exe - 2 error(s), 0 warning(s)
错误很明显 就是 程序 会跳过i的声明 定义语句
解决方法 加个大括号 限制变量的作用域 即可
int Val;
switch(Val)
{
case 1:
{int i = 1;}
break;
case 2:
break;
default:
break;
}
既然有了if、else组合为什么还需要switch、case组合呢?
if、else一般表示两个分支或是嵌套表示少量的分支,但如果分支很多的话……还是用
switch、case组合吧。其基本格式为:
switch(variable)
{
case Value1:
//program code (这里的代码尽量不要超过20行。可以写成子函数调子函数)
case 后面可以是枚举类型整形,包括bit,int,long。在C++里的话用字符也可以,
字符在内存中是以 asc 码存放的
比如case 'c',因为字符在内存里是用一个整数来表示的,也就是传说中的ASC码
break; 每个case语句的结尾绝对不要忘了加break
case Value2:
//program code
break;
case Value3:
//program code
break;
…
default: 最后必须使用default分支。即使程序真的不需要default处理,也应该保留
break; 把default子句只用于检查真正的默认情况。(别为了少敲代码而使用default做为最后一种情况)
这样将失去case语句的标号所提供的自说明功能,而且也丧失了使用default子句处理错误情况的能力。
}
相关文章推荐
- 8.读c语言深度剖析 -- switch case
- 读书笔记之:C语言深度剖析
- 读c语言深度剖析 -- auto register static sizeof signed、unsigned
- 读c语言深度剖析 -- 闲谈const(3)
- 读c语言深度剖析 -- 宏定义(1)
- 【C语言深度剖析】测试系统存储是大端模式还是小端模式的方法
- C语言深度剖析读书笔记
- C语言深度剖析-读书简记
- C语言深度剖析学习笔记-预处理
- 20110907C语言深度剖析笔记
- C语言结构体深度剖析
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- 1.读c语言深度剖析 -- 运算符的优先级
- 6.读c语言深度剖析 -- 第一章 关键字(32个)
- C语言深度剖析——读书笔记
- c语言深度剖析笔记4
- C语言深度剖析-----最终的胜利
- 读c语言深度剖析 -- volatile
- 读c语言深度剖析 -- 宏定义(2)
- 读书笔记之:C语言深度剖析