概述
看到本文的应该都是初入行的同学吧,这篇文章主要是记录工作中的一点case,让我有眼前一亮的感觉。这次呢,是因为接手另一位程序员的代码,调试时发现的switch保险的一种做法,让我省了大事。
最简单的用法
switch属于很简单,易用的,看看形式,观察一下就好。这里我重点要说的是最后一点,一般来说,我们都会罗列处所有的case,并给出对应的处理策略。所以,如果进入到default,就说明我们的代码是有bug的。但是,我以前都没这个意识,会写default,但是里面不会写东西。而下面给了很明确的提示,就真的很友好了。
switch (type) {
case TYPE_EASY:
// ...
break;
case TYPE_NORMAL:
// ...
break;
case TYPE_HARD:
// ...
break;
default:
ERROR() << "switch分支没有写全,请联系xxx"; // ERROR是封装的log输出,其他文章里有介绍
break;
}
一般用法
这种用法一般都会介绍的。原则就是一旦进入到switch内部,必须遇到break,才能中途退出。
int i = 2;
switch (i) {
case 1: std::cout << "1";
case 2: std::cout << "2"; //execution starts at this case label
case 3: std::cout << "3";
case 4:
case 5: std::cout << "45";
break; //execution of subsequent statements is terminated
case 6: std::cout << "6";
}
C++17的新增用法
其实就是括号里面可以用表达式了,我是一眼就可以看懂,所以也就不啰嗦了。
// the C++17 init-statement syntax can be helpful when there is
// no implicit conversion to integral or enumeration type
switch (Device dev = get_device(); dev.state())
{
case SLEEP: /*...*/ break;
case READY: /*...*/ break;
case BAD: /*...*/ break;
}
// pathological examples
// the statement doesn't have to be a compound statement
switch(0)
std::cout << "this does nothingn";
// labels don't require a compound statement either
switch(int n = 1)
case 0:
case 1: std::cout << n << 'n';
最后
以上就是迷人指甲油为你收集整理的C++ switch 用法(由简入繁,不一样的文章)的全部内容,希望文章能够帮你解决C++ switch 用法(由简入繁,不一样的文章)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复