switch 內部的變數定義
1.因為c++語言規定,不允許跨過變數的初始化語句直接跳轉到該變數作用域內的另一位置,所以有了如下情況:
bool bsuccess = false;switch
(bsuccess)
break
;case
false
: j = 1; //
正確,給j賦值
if (str.empty()) //
錯誤,str在作用域內,但是沒有初始化
if (str1.empty()) //
錯誤,str1不在作用域內
break
;default
:
break
;}
2. switch語句裡不能夠使用 continue 語句,除非它內嵌在其他的迭代語句之中。
goto 語句
1.和switch語句類似,goto語句也不能將程式的控制權從變數的作用域之外轉移到作用域之內。
gotoend;
int i = 0; //
錯誤,goto語句繞過了乙個帶初始化的變數定義
end:
i = 1; //
錯誤,此處使用i,但是goto語句繞過了它的宣告
但是以上語句可以在vs2015編譯通過
2.向後跳過乙個帶初始化的變數定義是合法的,跳回到變數定義之前意味著系統將銷毀該變數,然後重新建立它。
begin:int i = 10
;
//...
if (i <= 0
)
goto begin;
c Primer學習筆記 5 語句
第五章語句 1.學習完表示式再來看語句,感覺好像沒什麼好看的,只有把幾條語句注意點摘錄一下。2.else 語句總是與最後出現的末被匹配的 if語句匹配。3.當遇到break 語句時,switch 語句被終止,控制權被轉移到緊跟在 switch 結束花括號後面的語句上。在這一點上千萬不要想當然 4.f...
《C Primer》學習筆記 第五章語句
1.在c中物件的定義並不被視為c語言的語句,塊中的所有物件定義必須出現在任何程式語句之前 由於物件的定義是c 語言的一條語句,所以可以將物件定義放在任何其他語句能夠出現的地方。2.在condition 中定義的物件只在與if 相關的語句或語句塊中可見。3.c和c 中關鍵字case後面的值必須是一種整...
c primer讀書筆記 第5章 語句
1.switch語句 case關鍵字和它對應的值一起被稱為case標籤,case標籤必須是整型常量表示式。int val 42 char ch while cin ch switch的執行流程有可能跨過某些case標籤。如果程式跳轉到了某個特定的case,則switch結構中該case標籤前的部分會...