C語言中switch語句的思考

2021-07-10 05:35:42 字數 966 閱讀 8745

switch語句是c語言中提供的一種用於多分支選擇的語句 其基本用法如下;

switch(表示式)
其語義是:計算表示式的值。 並逐個與其後的常量表示式值相比較,當表示式的值與某個常量表示式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行後面所有case後的語句。如表示式的值與所有case後的常量表示式均不相同時,則執行default後的語句。其中表示式的值可以是int,byte,char,short, enum這幾種。

然而其在當表示式的值與某個常量表示式的值相等時, 將會執行其後全部的語句。這一點有時會產生不少錯誤。因此通常我們會在每個case的語句後加入乙個break來跳出switch語句避免此後的語句被執行。

但是,這是為什麼呢?為什麼此後的語句會全部被執行?

在很多c語言教程中,switch語句後面跟著的一般都是臭名昭著的goto語句,而課本的這種安排方式是合理的,因為在switch語句中,「case 常量表示式」只相當於乙個語句標號, 表示式的值和某標號相等則轉向該標號執行,但不能在執行完該標號的語句後自動跳出整個switch 語句,所以出現了繼續執行所有後面case語句的情況。

讓我們看一段含有goto語句的**

#include"stdio.h"

int main(void)

printf("%d",n);

}

再看看switch語句的

#include 

int main(void)

return

0;}

兩者完全相似,由於沒學過彙編所以沒法直接對比兩者的彙編**,不過估計實現方式是一樣的。

因此,這樣子的**也是合理的了。

#include 

int main(void)

return

0;}

C語言中switch語句

在多分支選擇中,用if語句程式會冗長,可讀性低,用switch更合適。switch語句格式 switch 表示式 注意 1 當 表示式 與 各個常量 都不匹配時執行default後的語句n,也是可有 可無 2 switch後面括號裡的 表示式 的值為整型或字元型 3 若沒有default時,swit...

C語言switch語句

switch語句 switch 表示式 case 常量表示式 1 語句1 case 常量表示式 2 語句2 case 常量表示式 n 語句n default 語句 n 1 說明 1 switch後面括號內的表示式,其值可以使整形 字元型 列舉型資料 2 應該在執行乙個case 分支後,使流程跳出 s...

C語言switch語句

既然有了if else 組合為什麼還需要switch case 組合呢?那你既然有了菜刀為什麼還需要水果刀呢?你總不能扛著雲長的青龍偃月刀 又名冷豔鋸 去削蘋果吧。如果你真能做到,關二爺也會佩服你的。if else 一般表示兩個分支或是巢狀表示少量的分支,但如果分支很多的話 還是用switch ca...