switch語句中default用法詳解


當年學C語言switch開關語句的時候,很多人會告訴你它是這么用的:


   
   
  
  
          
  1. switch(表達式){
  2. case常量表達式1: 語句1;break;
  3. case常量表達式2: 語句2;break;
  4. case常量表達式n: 語句n;break;
  5. default: 語句n+1;break;
  6. 其語義是:計算表達式的值。並逐個與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時,即執行其后的語句,然后不再進行判斷,繼續執行后面所有case后的語句。如表達式的值與所有case后的常量表達式均不相同時,則執行default后的語句。

很多人當時都是這么理解的吧。

好,我們來看這樣一個程序


   
   
  
  
          
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int c= 0, k;
  5. for (k = 1; k < 3; k++)
  6. switch (k)
  7. {
  8. default:c += k;
  9. case 2:
  10. c++; break;
  11. case 4:
  12. c += 2; break;
  13. }
  14. printf( "%d",c);
  15. return 0;
  16. }
你覺得答案會是多少?

答案是3。

分析一下這個題目,首先看上去第一眼就很怪,怎么把default放在第一句了。那么程序是怎么執行的呢?

當k=1的時候,c+=k ——>c=1 這個時候要注意了,default后面並沒有break,所以並不會跳出去,會執行case2,c++

——>c=2,遇到break,跳出。

當k=2的時候,執行case2 ,c++——>c=3;遇到break,跳出。

所以這里總結一下default的用法:

如果default語句在所有case最后,此時可以不加break 如果default語句之后還有case語句,如果不加break,則default語句執行過之后會繼續下面的case語句,此時必須要在default之后加break語句,不過這種default用法是不推薦的,default顧名思義是缺省情況,只有任何條件都不匹配的情況下才會執行,所以應該將default語句放在所有case結束之后





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM