c/c++排坑(3) -- c/c++中的switch语句
生活随笔
收集整理的這篇文章主要介紹了
c/c++排坑(3) -- c/c++中的switch语句
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
switch語句的簡單介紹
一個 switch 語句允許測試一個變量等于多個值時的情況。每個值稱為一個 case,且被測試的變量會對每個 switch case 進行檢查。
switch(expression){case constant-expression :f1();break; // 可選的case constant-expression :f2();break; // 可選的// 您可以有任意數(shù)量的 case 語句default : // 可選的f(); }這玩意兒其實就是為了代替多種情況下if... else if...的這種嵌套。看上去很簡單對不對,但是新手總會在這里遇到麻煩:
- constant-expression必須是一個常量或字面量。const關鍵字并不真正表示常量,它只是標識這個變量不可變,其實更接近readonly的含義。比如寫成下面的代碼就會報錯:
- 上面的代碼還有另外的隱患:一是f1()函數(shù)執(zhí)行之后沒有加break語句,不加break語句就會繼續(xù)執(zhí)行后面的f2。當然也有可能為了特殊設計就是為了執(zhí)行f1然后執(zhí)行f2這種邏輯。但是在絕大多數(shù)情況下,沒加break都意味著錯誤。第二點是沒加default語句。一般建議加一下,這樣來保證默認情況。
- break有時候會誤用。來猜猜下面的代碼會執(zhí)行什么:
在給出結果之前,我們先來分析下這段代碼。這段代碼里case 'a'里有幾處都有break語句,一是while循環(huán)里有break語句,二是if語句里有break語句,三是case語句有也break語句。看看下圖的結果。再分析下源代碼,首先while循環(huán)的break會跳出循環(huán),if語句的break會直接跳出case 'a',因為if里面沒有break這一說法。所以后面的 cout << "成功跳出了if" << endl; 語句不會執(zhí)行,所以結果是只打印了一個1。
最后還是不得不吐槽這switch語句的break也太不人性化了,為了極少數(shù)情況,不得不再每個case后加break!!!
See you next time. Happy Coding!!!
我的github
轉載于:https://www.cnblogs.com/dnhua/p/10091771.html
總結
以上是生活随笔為你收集整理的c/c++排坑(3) -- c/c++中的switch语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小明加密通道进入_门禁系统跟闸机通道的区
- 下一篇: C++| |异常