迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

跳转到 switch 语句中的 Case 标签

作者:迹忆客 最近更新:2023/08/22 浏览次数:

本文将讨论 C++ 中 switch 语句的使用。 此外,还将讨论使用 switch 语句时可能出现的错误,包括跳转到 case 标签错误。


C++ 中的 switch 语句

switch 语句计算给定的布尔或整数表达式,并根据给定表达式的计算结果执行与 case 关联的语句。 它是冗长的 if-else-if 语句的最佳替代方案,因为它减少了代码长度并提高了清晰度。

在 C/C++ 中,switch 语句使用以下语法来执行评估。

句法:

switch(exp) {
  case a:
    // Block of code
    break;
  case b:
    // Block of code
    break;
  default:
    // Block of code
}

switch 语句的工作方式如下:

  • 该表达式在 switch 语句中计算一次。
  • 将 case 值与 switch 值进行比较。
  • 使用 case 语句计算 switch 表达式后,如果条件为 true,则执行匹配的 case 后面的代码块。
  • switch 语句中的break 和default 关键字是可选的。 我们将在本教程的末尾详细讨论这些内容。

假设我们想根据工作日编号计算工作日名称。

示例代码:

#include <iostream>
using namespace std;

int main() {
  int weak_day = 3;
  switch (weak_day) {
  case 1:
    cout << "Monday";
    break;
  case 2:
    cout << "Tuesday";
    break;
  case 3:
    cout << "Wednesday";
    break;
  case 4:
    cout << "Thursday";
    break;
  case 5:
    cout << "Friday";
    break;
  case 6:
    cout << "Saturday";
    break;
  case 7:
    cout << "Sunday";
    break;
  default:
    cout << "Invalid input";
  }
}

输出:

Wednesday

break 关键字

Break 关键字与 switch 语句一起使用,可以在满足给定情况后跳过 switch 主体的剩余情况。

在上面的示例中,当 switch 语句被求值并且满足情况 3 中的条件时,它会由于break而跳过 switch 主体的剩余代码块; 陈述。

default 关键字

default 关键字与 switch 语句一起使用,以在给定 switch 语句中不满足任何情况时执行指定的代码块。

让我们看下面的示例,它演示了在 switch 语句中使用 default 关键字。

示例代码:

#include <iostream>
using namespace std;

int main(){

int a = 4;
switch (a) {
  case 6:
    cout << "Value of a is 6";
    break;
  case 7:
    cout << "Value of a is 7";
    break;
  default:
    cout << "The number is other than 6 or 7";
}
}

输出:

The number is other than 6 or 7

在这个例子中,我们将整型变量的值指定为4,但是在执行过程中没有一种情况满足给定的条件。 因此,默认块被执行。


修复C++中switch语句跳转到case标签错误

使用 switch 语句时可能出现的一个常见错误是跳转到 case 标签错误。 当在某些 case 标签内/下进行声明时会发生该错误。

让我们看下面的例子来理解这个问题:

#include <iostream>
using namespace std;

int main() {
  int a = 1;
  switch (a) {
    case 1:
      int i=66;
      cout<<i;
      break;

    case 2:
      cout<<i*3;
      break;
    default:
      cout << "Looking forward to the Weekend";
  }
  return 0;
}

在上面的例子中,当我们在情况1中初始化i=66时:并执行代码。 该代码会生成错误“跳转到案例标签”,因为 i 的值对其他案例可见。

案例只是一个标签,因此不会限制其旁边编写的代码的范围。 因此,如果在执行过程中执行情况2,i将是一个未初始化的变量。

因此,像 C++ 这样的强类型语言永远不会允许这种情况发生。 因此,它会生成编译时错误。

情况 1 中的范围分隔符 {} 可以克服此范围问题并帮助执行代码而不会出现错误。

#include <iostream>
using namespace std;

int main() {
  int a = 1;
  switch (a) {
    case 1:{
      int i=66;
      cout<<i;
      break;
    }
    case 2:
      cout<<"value does not exist";
      break;
    default:
      cout << "Looking forward to the Weekend";
  }
  return 0;
}

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

解决C++ 中 - 'Python.h': No such file or directory 错误

发布时间:2023/08/22 浏览次数:117 分类:C++

本文将解释如何解决错误“Python.h”:没有这样的文件或目录。 当我们尝试在 C++ 中嵌入 Python 代码,但编译器无法在系统内部找到对 Python 的引用时,通常会发生这种情况。C++ 中 'Python.h': No

C++ 子类继承

发布时间:2023/08/22 浏览次数:93 分类:C++

继承是 OOP 的一个特性,其中一个类获取另一个类的属性和行为。 继承另一个类的类称为子类,而其属性被继承的类称为基类。本文将讨论继承类时出现的钻石问题。

C++ 调用基类方法

发布时间:2023/08/22 浏览次数:118 分类:C++

本文将讨论使用 C++ 从子类调用父类方法。 首先,我们将快速刷新继承。稍后我们将讨论不同场景下调用基类方法以及相关问题。

检查C++中的链表是否为空

发布时间:2023/08/22 浏览次数:127 分类:C++

链表具有多个动态分配的节点,其中包含一个值和一个指针。 本教程将教您三种在 C++ 中检查链表是否为空的方法。C++ 中使用根元素检查链表是否为空 链表中的根充当一个元素,即使链表为空

C++ 中的移动语义

发布时间:2023/08/22 浏览次数:160 分类:C++

在本文中,我们将讨论 C++ 中的移动语义:我们将讨论深拷贝和浅拷贝的相关概念 我们将快速讨论左值和右值的概念。 我们将尝试通过示例来理解移动语义。

在 C++ 中抛出异常

发布时间:2023/08/21 浏览次数:200 分类:C++

C++抛出异常是C++的一个强大功能,可用于处理错误和意外事件。 它主要用于终止程序的执行或将控制权转移到程序的不同部分。在 C++ 中抛出异常

C++ 中抛出超出范围的异常

发布时间:2023/08/21 浏览次数:176 分类:C++

This article discusses how to throw an out of range exception in C++. It also discusses the possible errors while throwing out of range exception in C++.

在 C++ 中抛出异常消息

发布时间:2023/08/21 浏览次数:192 分类:C++

它是通过在程序中可能出现问题的地方抛出异常来执行的。 C++ 中有几个异常处理关键字,但本文将介绍如何使用可变消息引发异常。使用标准 C++ 异常抛出带有消息的异常 - 无效参数

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便