c++ - switch : 无案例中断
问题描述
我有以下没有switch
a :break
case
char c = 'a';
switch(c) {
break;
case 'a' : cout << 'a' << endl;
break;
case 'b' : cout << 'b' << endl;
break;
default : break;
}
为什么此代码段打印a
?只遇到第一个break
语句后,开关不应该中断吗?
解决方案
第一个break
被忽略。
在switch(c)
,运行时跳转到case 'a'
as c=='a'
。之前的一切都被忽略了。
这就是为什么case 'b'
不打印就可以工作的原因'a'
,这就是为什么变量定义在switch
块中不受欢迎的原因:
int n=0;
switch (n)
{
int k=n;
case 0:
return k; // UB
}
推荐阅读
- swift - 无法加载 Info.plist 异常 (eGPUOverrides)
- c# - 如何对web api控制器的void方法进行单元测试
- sql - 涉及数据规范化的复杂查询
- python - 将字典中的值相乘(如果它存在于列表中)
- c# - ASP.NET Core JWT/Windows 身份验证 HTTP 400 错误
- php - php循环数组通过单独数组的while循环
- ios - iOS 12.1.1 beta 中的电子邮件配置安装流程
- css - 在撇号-cms 中的另一个 DIV 小部件中动态添加 DIV 小部件
- php - 未来的时间戳格式为 1. January 1970 with PHP date()
- java - WAR 文件 servlet 访问:ClassNotFoundException