我正在學習 switch case,我正在嘗試理解這段代碼背后的理論
int main() {
int number = 7;
switch(number) {
case 6:
printf("Charizard\n");
break;
case 7:
printf("Squirtle");
case 8:
printf("Wartortle");
break;
case 9:
printf("Blastoise");
break;
default:
printf("Unknown\n");
break;
}
}
輸出
SquirtleWartortle
預期產出
Squirtle
我理解取消休息;incase 7導致代碼繼續檢查更多情況,直到遇到另一個中斷。但我不明白為什么case 8要列印,因為條件不滿足,所以不應該列印。
uj5u.com熱心網友回復:
誤會就在這里:
我理解取消休息;in case 7 導致代碼繼續檢查更多的情況,直到遇到另一個中斷。
代碼實際上并沒有檢查更多的情況,它只是執行下面的所有情況,直到遇到中斷。
uj5u.com熱心網友回復:
switch 陳述句中的條件僅在對其運算式求值時檢查一次。然后將控制傳遞給相應的 case 標簽,或者如果標簽default不存在,則在 switch 陳述句之后。
因此,在您的代碼中,控制元件將傳遞給標有 case 標簽的陳述句case 7:,然后按順序執行代碼,直到遇到 break 陳述句
case 7:
printf("Squirtle");
case 8:
printf("Wartortle");
break;
uj5u.com熱心網友回復:
case是標簽,它們將控制權帶到那個位置,它不會做任何事情,因為break在末尾沒有case 7,控制流到下一行,依此類推,直到break遇到switch. 因此case 8也會被列印出來。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523692.html
標籤:C开关语句
上一篇:用于從字串s-pub-comtec-sap-product-app-1.0.0-mule-app.war中獲取值的AWK命令
