switch()的相关注意事项

作者: veaxen 分类: c/c++ 发布时间: 2017-07-31 18:12

这是我编程中没有注意到的地方吗,可能是我习惯用case和if的方式代替switch。但是还是需要了解的。

在C/C++中,switch的参数类型只能是bool,(unsigned) char,(unsigned) int,(unsigned) long等整数类型,还有一种特殊的类型--枚举类型也可以作为switch的参数,但是其他自定义类型就不可以了

double,float,string等是不可以作为switch的参数的,switch的参数也不可以是指针类型!

C++中使用switch还会经常遇到下面的问题:

这里,我们在switch中定义了变量,int a=3,这样是编译报错的,因为C++规定,不能跳过初始化语句,而这里,我们是在switch的{}中使用定义初始化语句int a=3的,a是属于switch{}作用域的,但是有可能执行不到初始化语句,所以这样是违反语法的,但是,如果我们把int a=3这个初始化语句改成,int a;a=3;那么就是可以的,同时a的作用域是在整个{}中的(int a是声明语句,不是初始化语句)

关于上面的问题,我们应该注意到a的作用域问题,所以建议在每个case中加入{}防止出现不小心的bug。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

一条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注