簡體   English   中英

如果默認值位於開關盒的中間,則會掉線嗎?

[英]Fall-through if default is in middle of switch case?

我有個問題。 在switch語句中,即使不是最后一個,是否也default測試了最后一個?

如果是這樣,請在以下代碼段中:

int i = 6;
int a=0, b=0, c=0;
switch (i) 
{
    case 1: 
    a++; 
    case 2: 
    default: 
    case 3: 
    b++; 
    case 6:
    c++; 
}
System.out.println(a + " " + b + " " + c); 

與情況6匹配后,增加c的值,因為沒有中斷,它將恢復默認值嗎?

我確實嘗試了這段代碼,但它似乎並沒有默認設置,也沒有發生故障。 我只是想知道?

目前,您的所有案件都會失敗,因為案件不會break; 同樣,您的開關有條件地基於i ,因此,如果要查看每種情況,則需要更改i

利用break; 應該不會影響您的案例在您的切換狀態下的位置,這也是default情況下的“案例”

編輯:正如@Ivan所提到的,如果打算通過,那么案件的位置將很重要

從匹配的case評估switchswitch語句的break或end。 如果您通過6,它將輸入6的大小寫,並且僅增加1。 但是,如果輸入7,它將從default開始,並以兩個增量下降到開關的末端。

除了在switch語句開始時進行的初始測試外,沒有對案例標簽進行其他測試。 一旦使用switch語句對i進行了評估,控制權便轉移到case 6:標簽,因為它與i匹配。 然后按順序執行語句,直到switch語句結束或遇到break語句為止。 這意味着僅c遞增。

break語句只會終止整個switch語句的執行; 是否存在break語句對重新測試switch表達式沒有影響,因為重新測試switch表達式都不會發生。

如果要default輸入案例標簽,那么i在switch語句開頭不得與任何案例標簽匹配。 如果在switch語句的開頭i99 ,則bc都會增加(發生穿透)。

有在哪里的情況下的順序標簽沒有限制的default顯示的標簽,只有至多一個default出現在switch語句。

暫無
暫無

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

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