[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