1樓:匿名使用者
switch case語句犯得錯誤:
會犯這種錯誤,都是基礎不牢固導致的。但是這樣的錯誤卻花費了我數小時去debug.想來真是很讓人鬱悶。
看一段**:(不想看**直接看後面總結)
private void arrange()
在這個語句中,如果direction=u。那麼四個case語句都將執行。如果direction=r。
將執行剩下三個語句。原因是switch語句原理是跳轉到ca***位置執行剩下的語句,直到最後或者遇見break為止。因此在每一條語句最後+break即可。
private void arrange()
這樣就能,每一個direction執行一步操作。
當然還有 別的用法,比如一個direction,讓他可以執行兩條或者3條操作這種。
總結:switch語句原理是跳轉到ca***位置執行剩下所有的語句(包括其他case裡面的),直到最後或者遇見break為止。因此在每一條語句最後+break即可。
因此不加break的話將會執行跳轉到的case本身以及以下所有的語句。
2樓:金色潛鳥
switch 語句 中 case 幾 冒號,相當於 入口指示牌, 若 不加break; 則 從 入口case 進入後,接著會依次通過所有後續 case 指示牌 和語句,直到 switch 語句 結束處。
例如:n=2; switch(n)
將從 case 2: 進入,依次執行:
x=7; case 4: x=12; defualt: x=8; 結束。最終 得到 x=8。
如果是 n=2; switch(n) ; 將從 case 2: 進入 執行 x=7; 遇 break; 則結束開關語句。最終 得到 x=7。
switch語句中如果執行了一條case語句是空的後如果沒有break會不會執行default語句(其他case也沒break)
3樓:墨汁諾
會執行bai
,如果case後面沒有
dubreak;就會一直執zhi行下去,直到有break為止;如果dao還專沒有就會執屬行到default語句,結束switch語句。
如果不在 case 的語句段最後寫上 break 的話,**將繼續執行下一個 case 中的語句段,因此,break語句的新增需要根據程式的邏輯來選用,如果有需要程式執行連續執行符合條件的case中的**,則不應該新增break而使得程式結束跳出。
4樓:匿名使用者
會執行,如果case後面沒有break;就會一直執行下去,直到有break為止;如果還沒有就會執行到default語句,結束switch語句
//下面這個題說明了 這個問題(連結)
5樓:匿名使用者
會的,如果一路到default都沒有break的話
switch語句中,case後面的語句序列中一定要有break語句嗎?
6樓:匿名使用者
不一定的。
switch 語句一行接一行地執行(實際上是語句接語句)。開始時沒有**被執行。僅當一個 case 語句中的值和 switch 表示式的值匹配時才開始執行語句,直到 switch 的程式段結束或者遇到第一個 break 語句為止。
如果不在 case 的語句段最後寫上 break 的話,**將繼續執行下一個 case 中的語句段,因此,break語句的新增需要根據程式的邏輯來選用,如果有需要程式執行連續執行符合條件的case中的**,則不應該新增break而使得程式結束跳出。
擴充套件資料:
switch語句規則:
1、只能針對基本資料型別中的整型型別使用switch,這些型別包括int、char等。對於其他型別,則必須使用if語句。
2、switch()的引數型別不能為實型 。
3、case標籤必須是常量表示式(constantexpression),如42或者'4'。
4、case標籤必須是惟一性的表示式;也就是說,不允許兩個case具有相同的值。
5、switch語句的語法如下(switch,case,break和default是關鍵字):
switch ( 變數表示式 )
7樓:匿名使用者
在 switch 語句中使用break語句將終止語句的序列。當遇到 break語句時,程式將整個 switch 語句後面的一行**處開始執行,就有一種跳出switch 語句的效果。
break 語句是可選的,如果省略掉break 語句程式將執行下一條 case ,如果你需要使用多條 case ,你可以不用沒有 break 語句。
switch 語句的使用在多選擇的時候要比 if else 執行效率要高。
8樓:匿名使用者
最好跟上。因為switch的工作原理,一旦發現匹配,就一直執行,不在判斷。
例int a=2
switch(a)
如若不加break,switch發現2匹配,首先執行printf("2");
然後再不判斷,
printf("3");
printf("4");
也執行了。這應該不是你的本意吧。所以最好每個case後面都加break。
9樓:匿名使用者
可以不有,那有幾個case就會執行幾個。舉個例子:switch(k),case1:
case2:case3假如有這3個case,如果沒有break,當k=1時,這三個都會執行,當每個都有break時,k=1時,case2, case3就不會執行。
10樓:匿名使用者
你知道break的意思嗎?如果沒有break,程式還會繼續走後面的判斷
c語言裡switch語句為什麼case後面有的加break有的不加?
11樓:匿名使用者
case後面的常量表示式實際上只起語句標號作用,而不起條件判斷作用,即「只是開始執行處的入口標號」。
因此,一旦與switch後面圓括號中表示式的值匹配,就從此標號處開始執行;
而且執行完一個case後面的語句後,若沒遇到break語句,就自動進入下一個case繼續執行,而不再判斷是否與之匹配,直到遇到break語句才停止執行,退出switch語句。
因此,若想執行一個case分之後立即跳出switch語句,就必須在此分支的最後新增一個break語句。
12樓:y愛華
只要程式執行了break關鍵字,就跳出switch語句
13樓:匿名使用者
後面沒有語句,加不加意思都一樣,所形成的效果也一樣。
加上了更完美。
加上break;語句,執行完前面語句,到這兒跳出switch語句。
不加break語句,執行完前面的語句,到這兒也要跳出switch語句。
所以,加不加都一樣的。
switch中的break作用是什麼?若不加,會出現什麼情況?請舉例說明
14樓:楓橋映月夜泊
1.switch中的break作用是結束switch迴圈,就是說不再執行下面的case語句。
2.如果不加的話,當你在一個case語句中執行完畢後,會進入下一個case語句,繼續switch迴圈。但是,如果某個分支中沒有語句,那麼也可以不寫break。
3.舉例:
如下圖程式所示,student=10,應迴圈case10,輸出「學生人數為10人」,但因為沒有break,繼續switch迴圈還會執行case20,輸出「學生人數為20人」,case20這句語句含有break,結束迴圈。
這樣就會出現問題,程式要求應當只需要輸出「學生人數為10人」即可,但實際程式輸出了兩個printf。若在case10後加上break,則正確。
break語句通常用在迴圈語句和開關語句中。當break用於開關語句switch中時,可使程式跳出switch而執行switch以後的語句;
如果沒有break語句,則會從滿足條件的地方(即與switch(表示式)括號中表示式匹配的case)開始執行,直到switch結構結束。
當break語句用於do-while、for、while迴圈語句中時,可使程式終止迴圈。而執行迴圈後面的語句,通常break語句總是與if語句聯在一起。即滿足條件時便跳出迴圈。
15樓:匿名使用者
作用是:用於跳出當前的case
例如:switch(xx)
如果在case1裡面新增了breakl那麼,執行完case1裡面的**,程式就跳出switch。
如果沒有break的話,那麼程式執行完case1就執行case2,一直執行下去。直到碰到break或者switch結束。
如果沒有break語句,則會從滿足條件的地方(即與switch(表示式)括號中表示式匹配的case)開始執行,直到switch結構結束。
當break語句用於do-while、for、while迴圈語句中時,可使程式終止迴圈。而執行迴圈後面的語句,通常break語句總是與if語句聯在一起。即滿足條件時便跳出迴圈。
16樓:烏蘇不滅中
作用跳出switch 不加做下面所有case
17樓:匿名使用者
有break就會不往下執行switch的其他分支,否則會一直執行晚全部分支
18樓:匿名使用者
跳出switch,不執行其他的case了
不加就一直走下去,知道下一個break後跳出
如果一直沒有,到switch結束後退出
19樓:匿名使用者
就跟送貨的原理差不多,case 1,2,3好比是1,2,3樓。
你要送給2樓,有break的時候你就不去3樓了,沒有break的時候3樓你也送了。
break可以理解為:「ok,這次完事了!」。
20樓:匿名使用者
在switch語句中,「case 常量表示式」只相當於一個語句標號, 表示式的值和某標號相等則轉向該標號執行,但不能在執行完該標號的語句後自動跳出整個switch 語句.
c語言還提供了一種break語句,專用於跳出switch語句,break 語句只有關鍵字break,沒有引數。在每一case語句之後增加break 語句, 使每一次執行之後均可跳出switch語句,從而避免輸出不應有的結果。
為什麼switch中有的case後加break,有的不加?
21樓:匿名使用者
加break就跳出不執行下面的case了,如果不加就一直執行到有break
22樓:匿名使用者
這樣的原因是,有時幾種情況需要相同處理,比如:a=1,2,3時要執行a=2,a=0時執行語句
回a=1,否則執行語句a=3,則程式可以如答下:
switch ( a )
打字不易,如滿意,望採納。
c語言程式switch語句中什麼時候可以不用break
23樓:匿名使用者
在選擇條件只有一個的時候可以不用break;不過這樣就失去使用switch語句的意義了。
你可以試試如果
內不用break來結束選擇容的話,那麼他執行完成這句後還會接著執行,直到碰到break才結束跳出switch語句。
switch(n)
沒有break的話,如果n=1,那麼執行後會輸出 1, 2.若n=2,那隻會輸出2.
新人學習寫sql語句,關於迴圈語句
沒有問題,在sqlserver2008裡執行得到正確結果 將sql server的用法用到mysql上,這算是創新嗎?你這是什麼資料庫的?mysql 嗎 如何用sql語句迴圈執行語句 sql語句無法實現迴圈,只能通過程式或者儲存過程來實現。如果只是一次性工作,則建議直接用excel的公式手批量生成s...
insert into語句怎麼寫? Sqlserver
小舅舅有點帥 插入書寫方式 1 insert into t1 field1,field2 value 001 002 最好的做法明確插入的每一列,列於查錯,而且漏列的機率會降低。2 insert into t1 field1,field2 values 001 002 003 004 能夠批量插入資...
寫小說常用的語句
桓蘭月 我們都是單翼的天使,唯有彼此的擁抱才能展翅飛翔,據說人來世上就是為了尋找另一半的,我千辛萬苦終於找到了你 16.一個人總要走陌生的路,看陌生的風景,聽陌生的歌,然後在某個不經意的瞬間,你會發現,原本費 盡心機想要忘記的事情真的就這麼忘記了。17.躲在某一時間,想念一段時光的掌紋 躲在某一地點...