switch case 語句內部變數定義

2021-07-05 15:49:52 字數 605 閱讀 3959

switch case語句是非常常用的語句,入門的碼農也知道是做什麼的。

但關於switch case內定義變數的問題,網上的很多博文都有謬誤,在這裡我寫一下對這個語句的了解。

一先看合法的定義方式:

int main(int argc, const char * argv) 的定義域中,有對此變數的呼叫,那就是『試圖在初始化乙個變數前使用它』,因此c++11禁止了這種寫法。

四額外談一些:

如果不在case中加上{},整個switch(){}都是使用同乙個作用域,這一點通過上文符合語法例子中對j、k的定義和使用就能看出來。最好的方法就是在編碼時,將整個switch語句用到的變數在switch外宣告,並且針對某個case需要單獨使用變數的情況,用{}明確此case語句的作用域

case的實現與goto非常相似,case的本質是一種標籤,在switch case語句中變數的定義問題可以推廣到goto語句中。

下面的**也是不合法的,因為string是乙個類,類有自己的隱式初始化方法,實際上這依然是個可能被跳轉掉的初始化語句。

case 1:

std::string tempstr;

break;

switch case語句用法

switch case語句用法 2007 12 25 08 11 if語句處理兩個分支,處理多個分支時需使用if else if結構,但如果分支較多,則巢狀的if語句層就越多,程式不但龐大而且理解也比較困難.因此,c語言又提供了乙個專門用於處理多分支結構的條件選擇語句,稱為switch語句,又稱開關...

switch case語句踩坑

今天寫了乙個根據選擇的生日自動選擇年齡段的功能 如下 psetbasebirth change function else if age 19 else if age 25 else if age 30 else if age 35 else if age 40 else if age 45 els...

switch case 語句的用法

public class test7 結果是 five three other switch 表示式 switch的用法是判斷case後面的表示式和switch後面的表示式是否相匹配,一旦case匹配,就會順序執行後面的程式 而不管後面的case是否匹配,直到遇見break。如上所給的 中,由於i等...