我是靠谱客的博主 迷人指甲油,最近开发中收集的这篇文章主要介绍C++ switch 用法(由简入繁,不一样的文章),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

看到本文的应该都是初入行的同学吧,这篇文章主要是记录工作中的一点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 用法(由简入繁,不一样的文章)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部