[C] Swtich里面只有CASE会执行喔?

楼主: Wardyal (Wardyal)   2023-04-06 13:39:17
#include <stdio.h>
int main() {
int num = 3;
switch (num) {
case 1:
printf("Case 1\n");
break;
if (num == 3){
num = 2;
}
case 2:
printf("Case 2\n");
break;
case 3:
printf("Case 3\n");
break;
default:
printf("Default case\n");
}
return 0;
}
我在Switch里面加上一个if statement
跑出来的结果还是Case 3
所以在Switch Case里面只会执行那几个Case?
还是我哪里写错了?
早上改一段测试Code发现的问题
(另外不加上if,直接num = 2来修改也没用)
你板有C语言大师吗
作者: SecondRun (雨夜琴声)   2023-04-06 13:43:00
你的if干嘛不摆在switch之前
楼主: Wardyal (Wardyal)   2023-04-06 13:44:00
因为在测试一个不会进去的statement 想说直接在他前面改才发现好像不能改的?
作者: koy784512 (我永远喜欢风真いろは)   2023-04-06 13:45:00
没看过有人这样用的
作者: SecondRun (雨夜琴声)   2023-04-06 13:45:00
看不懂你想干嘛 反正不行
作者: MurasakiSion (紫咲シオン)   2023-04-06 13:46:00
你都break了还想要他干嘛他的流程就是case进去 break退出而已阿==
楼主: Wardyal (Wardyal)   2023-04-06 13:48:00
单纯想看第二个case的结果 又懒的改输入的变量 D;
作者: MurasakiSion (紫咲シオン)   2023-04-06 13:48:00
那个if就是case 1底下的一个区段 但因为break所以永远不会抵达不要用缩排自己骗自己
楼主: Wardyal (Wardyal)   2023-04-06 13:51:00
可是我加在第一个case之前也是一样
作者: MurasakiSion (紫咲シオン)   2023-04-06 13:52:00
他遇到switch就是开始找进入点阿
作者: TNPSCG (TNP)   2023-04-06 13:52:00
先搞懂break的机制 跟你讲的东西完全无关
作者: lturtsamuel (港都都教授)   2023-04-06 13:54:00
如果它会执行前面别的case 还要这switch干嘛?我猜你想做的事情是goto
楼主: Wardyal (Wardyal)   2023-04-06 13:55:00
狗妹 我懂了
作者: lturtsamuel (港都都教授)   2023-04-06 13:58:00
你很棒

Links booklink

Contact Us: admin [ a t ] ucptt.com