C/C++中的switch case 語句是怎樣的一個執行過程
你理解的是正確的,switch case語句完全可以用if else語句來替換掉;但是當比較較多 或者很多其他控制流程的時候,switch語句 的可讀性比if else語句高的多;另外注意的就是 一般情況下每一個case 之后都要跟一個break; 其目的是為了跳出switch語句塊去執行switch后邊的語句;但是實際項目中多出現這種情況
switch(i)
{
case 1:
case 3:
case 5:
……; //這里當i等于 1 3 5 時都會執行
break;//直到這里退出
case 2:
(1)……;
case 4:
(2)……;
case 6:
(3)……;//這里i 等于2時會執行(1)(2)(3); i 等于4時會執行(2)(3); 等于6時只會執行(3)
break;
case 9:
break;
default:
break;
}
類似于上邊的這種邏輯 如果用if else語句控制起來就會很麻煩,且可讀性太差,而用switch語句就更加簡潔直觀,可讀性也更強
switch case語句 怎么執行
每行標行號,好說一點
1void main ( )
2 {
3 int x = 1, y = 0, a = 0, b =0;
4 switch ( x )
5 {
6 case 1: switch ( y )
7 {
8 case 0: a++; break;
9 case 1: b++; break;
10 }
11 case 2: a++; b++; break;
12 case 3: a++; b++;
13 }
14 printf ("\na = %d, b = %d", a,b);
15 }先switch x
x是1
走6行的case 1
執行6行的switch y
y=0
執行8行的case 0
于是a++ a值為1
退出6行的switch
注意6的case 1沒有break
所以繼續執行11行的case 2
a++ b++
這時a = 2 ;b = 1
這回有break了
退出4的switch
執行14行的輸出
于是輸出
a=2, b=1
switch case語句總執行第一個case
你的代碼邏輯是錯誤的,從你現在的代碼邏輯只能猜出你是想實現根據下拉菜單不同的選擇后自動跳轉到相應的頁面,如果是這樣的話那么你的這個for循環就是完全沒有必要的!
本身選的這個DropDownList控件的SelectIndexChanged事件就已經能夠知道現在選擇的是哪個下拉列表項的Index索引值,
然后直接case當前下拉列表的SelectIndex值就行了
也就是
switch()
{
case 1:
*ct("*");
break;
case 2:
*ct("*");
break;
case 3:
*ct("*");
。。..
}
關于switch語句,case和default的執行順序,
先執行case,當所有的case都判斷完不符合條件的時候,才會執行default,無論你的default放在哪,第一行,最后,或者中間位置。
default是缺省默認的意思,default在switch語句中不管放在哪都是從第一個case開始執行,當所有的case都不滿足條件時,才執行default。
需要注意的是,default在最后一行時下面的break可以省略不寫,但如果沒有在最后一行default下面需要加上break,否則執行完default后會繼續執行下面的代碼直到遇到break跳出循環。