簡體   English   中英

C ++:關於切換和中斷的簡短問題

[英]C++: Short question regarding switch and break

例:

switch( x )
{
case y:
 if ( true )
 {
    break;
 }
 cout << "Oops";
 break;
}

如果switch語句選擇y ,是否會將Oops寫入標准輸出? switch語句中的break是一個動態關鍵字(例如“ continue”),可以在條件下調用該關鍵字,還是一個靜態關鍵字(例如,右括號}

break封閉的switchwhilefordo ... while 它不會脫離封閉的if或裸露的塊。 非常像continue

它當然不是switch語句所需語法的一部分(例如,右括號是塊語法的一部分)。 break是一條語句,其本質含義是“將執行轉移到最里面的易碎構造的末尾”。

不, Oops我們不會將其寫出來, break跳到該語句后面。

您可以有條件地使用break語句,只需要在創建還支持break (即循環)的嵌套語句時小心即可。

break絕對是動態的。 因此,如果您寫if (false) break; 您的Oops會被寫出。

在這種情況下,將break視為goto end_of_switch

不,您的情況下不會打印出來。 break僅中斷開關和循環,而不中斷條件或函數或任意封閉范圍。 因此,一個更相關的問題是在這種情況下是否會打印Oops:

switch( x )
{
case y:
 for ( int i = 0; i < 10; ++i )
 {
    break;
 }
 cout << "Oops";
 break;
}

這里的答案是肯定的,它會的。 break將突破for而不是switch

不會。它將脫離開關構造。 “ break”用於走出最內層的循環結構或開關結構。 因此,在您的情況下,“哎呀”不會在屏幕上打印出來。 如果您希望這種情況發生,可以在代碼中使用if(false)代替if(true)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM