第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要切換/刪除而不是If / Else If?

為什么要切換/刪除而不是If / Else If?

C
智慧大石 2019-11-29 11:06:02
這個問題主要針對C / C ++,但我想其他語言也很重要。我不明白為什么仍然使用switch / case而不是if / else if。在我看來,這很像使用goto的方法,并且會產(chǎn)生相同的混亂代碼,而if / else if可以以更有條理的方式實現(xiàn)相同的結(jié)果。不過,我經(jīng)??吹竭@些障礙。找到它們的常見地方是在消息循環(huán)(WndProc ...)附近,而這些地方卻是它們引起最嚴重破壞的地方:變量在整個塊中共享,即使不適當(dāng)(也不能內(nèi)部初始化)。必須特別注意不要掉線,等等。就個人而言,我避免使用它們,并且我想知道我是否還缺少一些東西?它們是否比if / else更有效率?它們是按照傳統(tǒng)進行的嗎?
查看完整描述

3 回答

?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

好吧,原因之一就是清晰度。


如果您有開關(guān)/盒,則表達式無法更改....即


switch (foo[bar][baz]) {

case 'a':

    ...

    break;

case 'b': 

    ...

    break;

}

而如果使用if / else,則如果您寫錯(或意圖):


if (foo[bar][baz] == 'a') {

    ....

}

else if (foo[bar][baz+1] == 'b') {

    ....

}

人們在閱讀您的代碼時會懷疑“ foo表達式應(yīng)該是相同的”還是“為什么它們不同”?


查看完整回答
反對 回復(fù) 2019-11-29
?
至尊寶的傳說

TA貢獻1789條經(jīng)驗 獲得超10個贊

還請記住,switch語句允許控制流繼續(xù)進行,這允許您很好地組合條件,同時允許您為某些條件添加其他代碼,例如以下代碼:


switch (dayOfWeek)

{

    case MONDAY:

        garfieldUnhappy = true;

    case TUESDAY:

    case WEDNESDAY:

    case THURSDAY:

    case FRIDAY:

       weekDay = true;

       break;

    case SATURDAY:

       weekendJustStarted = true;

    case SUNDAY:

       weekendDay = true;

       break;

}

if/else相反,在這里使用語句并不是那么好。


if (dayOfWeek == MONDAY)

{

    garfieldUnhappy = true;

}

if (dayOfWeek == SATURDAY)

{

    weekendJustStarted = true;

}

if (dayOfWeek == MONDAY || dayOfWeek == TUESDAY || dayOfWeek == WEDNESDAY

    || dayOfWeek == THURSDAY || dayOfWeek == FRIDAY)

{

    weekDay = true;

}

else if (dayOfWeek == SATURDAY || dayOfWeek == SUNDAY)

{

    weekendDay = true;

}


查看完整回答
反對 回復(fù) 2019-11-29
  • 3 回答
  • 0 關(guān)注
  • 421 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號