在日常的開發當中,我們經常會遇到一種情況,我們用一個變量表示狀態。比如關閉-激活-完成,當我們需要判斷狀態的時候,就需要羅列if-else
語句。
1
2
3
4
5
6
7
|
if (status == 'closed' ) { // todo } else if (status == 'activated' ) { // todo } else if (status == 'done' ) { // todo } |
如果只有少數幾個還好,當我們要枚舉的狀態多了之后,寫if-else就會非常繁瑣。所以C++
當中提供了switch語句來代替簡單的if-else
的羅列。
1
2
3
4
5
6
7
8
9
10
|
switch (expression) { case constant1: //todo case constant2: //todo case constant3: //todo default : //todo } |
要注意:switch語句當中的expression只能是一個整數或者是枚舉類型,不能是其他類型。比如像是string就不可以作為switch語句的case,這個非常坑,很容易不小心寫錯。
所以上面的if-else語句可以改寫成:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
switch (status) { case 1: // todo1 break ; case 2: // todo2 break ; case 3: // todo3 break ; default : //todo } |
最后的default
表示默認情況,也就是當之前的所有可能都不滿足時會執行defalut
標簽下的內容。還有一點需要注意,switch語句有點像是路牌,它只是根據expression
的值將代碼跳轉到對應的位置,并不是只運行對應標簽的代碼。
比如當我們的status
為1時,代碼會跳轉到todo1
處,在執行完todo1
之后依然會繼續往下執行todo2、todo3的代碼。如果我們只希望執行todo1
的代碼,需要在末尾加上break
,表示執行結束,跳出。這也是一個坑點,加不加break完全是兩種效果。
數字1、2、3表示狀態顯然會導致含義不夠明顯,所以我們也可以使用枚舉類型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
enum status {closed, done, activated}; status st; switch (st) { case closed: //todo break ; case done: //todo break ; case activated: //todo default : //todo } |
到此這篇關于C++ Switch 語句詳情的文章就介紹到這了,更多相關C++ Switch 語句內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://developer.51cto.com/art/202111/689090.htm