首页 > 编程语言 >C++中Switch穿透的妙用

C++中Switch穿透的妙用

时间:2024-03-31 18:13:50浏览次数:25  
标签:case 妙用 Case 代码 switch C++ 穿透 Switch

在C++中,Case穿透(fall-through)指的是在switch语句中,一个case标签没有显式地使用break语句来终止,而是直接执行下一个case标签中的代码。虽然Case穿透在编程中有时会被视为不良实践,因为它可能导致代码的可读性变差和潜在的错误,但有时也可以利用它来实现一些特定的目的。

以下是一些利用Case穿透的妙用示例: 多个条件下执行相同的代码:如果有多个case标签需要执行相同的代码块,可以利用Case穿透来避免重复代码的编写。例如:

switch (value) {
    case 1:
    case 2:
    case 3:
        cout << "Value is 1, 2, or 3" << endl;
        break;
    case 4:
        cout << "Value is 4" << endl;
        break;
    default:
        cout << "Value is not recognized" << endl;
}
  1. 处理一些特定的范围值:有时候可能需要在一个范围内执行相同的操作,也可以利用Case穿透来实现。例如:
    switch (score) {
        case 90 ... 100:
            cout << "Grade is A" << endl;
            break;
        case 80 ... 89:
            cout << "Grade is B" << endl;
            break;
        case 70 ... 79:
            cout << "Grade is C" << endl;
            break;
        // ...
        default:
            cout << "Grade is F" << endl;
    }

    在这个例子中,使用了C++11引入的范围表达式来表示分数范围,不同范围内执行相同的操作。

    尽管在特定情况下利用Case穿透可能会使代码更简洁,但在实践中要小心使用,以确保代码的可读性和维护性。

标签:case,妙用,Case,代码,switch,C++,穿透,Switch
From: https://www.cnblogs.com/VisionSeven/p/18107019

相关文章

  • C++单例类和线程的一个结合
    一个C++的单例类,类里面定义了一个线程对象,线程对象会定时去计算一个时间,并返回这个计算出来的时间。 应用场景:比如,有些比较消耗时间的操作,就可以放在线程里面定时计算,我们在外部定时读取。这样就可以避免主线程被阻塞。 #include<iostream>#include<thread>#incl......
  • 第十四届省赛大学B组(C/C++)接龙数列
    题目链接:接龙数列对于一个长度为 K 的整数数列:A1,A2,...,AK我们称之为接龙数列当且仅当 Ai 的首位数字恰好等于 Ai−1的末位数字(2≤i≤K)。例如 12,23,35,56,61,1112,23,35,56,61,11 是接龙数列;12,23,34,5612,23,34,56 不是接龙数列,因为 56 的首位数字不等于 3......
  • 【每周例题】力扣 C++ 二叉树的最小深度
    二叉树的最小深度题目二叉树的最小深度题目分析1.首先我们可以处理最小深度为0与最小深度为1的情况:最小深度为0:头结点为空;root==nullptr最小深度为1:root->left==nullptr&&root->right==nullptr2.接下来分为左右子树处理,我们可以用递归来计算最小深度3.最后比较左......
  • 【每周例题】力扣 C++ 搜索插入位置
    搜索插入位置题目搜索插入位置 题目分析1.第一个想法肯定是暴力遍历,找到了就输出下标,找不到就对比前后两个数字,寻找合适的位置插入。2.需要注意一点,我们需要再一开始就对比target与数组最后一个数的大小,如果比数组最后一个数大,直接返回数组长度3.第二个想法就是缩短寻找的......
  • [C++11]右值引用
    阅读导览:通过左值、右值的基础概念来引出左值引用和右值引用知道左值引用和右值引用后,先了解他们为什么能实现(底层原理)熟悉了解左值引用的优点和缺陷并给出疑问,进而引出右值引用出现的意义以及如何解决左值引用的疑问最后从多个方面再次了解右值引用基础概念右值、左值......
  • C++类(class)中的this指针与静态成员
    1.this指针作用:指向成员函数所作用的对象2.静态成员定义方式:在定义成员时加static关键字。访问方式:不用通过对象就可以访问(类似全局变量/全局函数)目的:设置静态成员这种机制的目的是将和某些类紧密相关的全局变量和函数写到类里面,看上去像一个整体,易于维护和理解。①......
  • C++Lambda表达式
    Lambda表达式0、介绍c++11新引入了lambda表达式,一般用于定义匿名函数,使得代码更加灵活简洁。lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更加简介,并且可以在函数内部定义。通常,lambda用于封装传递给算法或异步方法的几行代码。1、Lambd......
  • 老鹰捉小鸡 c++编程参考程序(一本通51.
    #include<bits/stdc++.h>usingnamespacestd;intmain(){   inti,j,a[6],n;//定义整形变量   for(i=1;i<6;i++)//循环      a[i]=i;   i=1;   cout<<i<<":"<<"";//输出i   for(j=1;j<6;j++)//再循环      cout<......
  • C++String类
    前言大家好,我是jiantaoyab,本篇文章将给大家介绍String类的常用法,和模拟实现String类。String介绍在cplusplus中,对String有着下面的介绍。Thestandardstringclassprovidessupportforsuchobjectswithaninterfacesimilartothatofastandardcontainerofb......
  • C++原子操作与内存序 1
    问题#include<iostream>#include<thread>intmain(){ intsum=0; autof=[&sum](){ for(inti=0;i<10000;i++) sum+=1; }; std::threadt1(f); std::threadt2(f); t1.join(); t2.join(); std::cout<<"thesum......