跳转到 switch 语句中的 Case 标签
本文将讨论 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;
}
相关文章
解决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 浏览次数:88 分类:C++
-
在本文中,我们将讨论以下三种类型的继承:Public 继承 Private 继承 Protected 继承 但是,在讨论继承类型之前,我们将讨论 C++ 中基类和派生类的概念。
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++ 异常抛出带有消息的异常 - 无效参数