跳转到 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;
}
相关文章
Arduino 复位
发布时间:2024/03/13 浏览次数:315 分类:C++
-
可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。
Arduino 的字符转换为整型
发布时间:2024/03/13 浏览次数:181 分类:C++
-
可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。
Arduino 串口打印多个变量
发布时间:2024/03/13 浏览次数:381 分类:C++
-
可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。