首页 > 编程知识 正文

C switch 用法由简入繁不一样的文章

时间:2023-05-04 14:36:37 阅读:270534 作者:2050

看到本文的应该都是初入行的同学吧,这篇文章主要是记录工作中的一点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';

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。