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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么要使用switch語句而不是if-else?

為什么要使用switch語句而不是if-else?

人到中年有點(diǎn)甜 2019-12-21 13:00:05
我一直想知道這已經(jīng)有一段時(shí)間了。到目前為止,我不是一個(gè)頑固的程序員,主要是小型Python腳本,并且已經(jīng)編寫了一些分子動(dòng)力學(xué)模擬。對(duì)于真正的問題:switch語句的意義是什么?為什么不能只使用if-else語句?感謝您的回答,如果您之前曾被問過,請(qǐng)指向我的鏈接。S.Lott指出,這可能是If / Else vs. Switch問題的重復(fù)。如果要關(guān)閉,請(qǐng)關(guān)閉。我將其開放以供進(jìn)一步討論。
查看完整描述

3 回答

?
qq_花開花謝_0

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊

甲開關(guān)構(gòu)建體更容易地轉(zhuǎn)換成一個(gè)跳躍(或分支)表。當(dāng)案例標(biāo)簽靠在一起時(shí),這可使switch語句比if-else效率更高。這個(gè)想法是將一堆跳轉(zhuǎn)指令順序地放在內(nèi)存中,然后將其值添加到程序計(jì)數(shù)器中。這將一系列比較指令替換為加法運(yùn)算。


以下是一些極為簡(jiǎn)化的偽裝配件示例。首先,if-else版本:


    // C version

    if (1 == value)

        function1();

    else if (2 == value)

        function2();

    else if (3 == value)

        function3();


    // assembly version

    compare value, 1

    jump if zero label1

    compare value, 2

    jump if zero label2

    compare value, 3

    jump if zero label3

label1:

    call function1

label2:

    call function2

label3:

    call function3

接下來是交換機(jī)版本:


    // C version

    switch (value) {

    case 1: function1(); break;

    case 2: function2(); break;

    case 3: function3(); break;

    }


    // assembly version

    add program_counter, value

    call function1

    call function2

    call function3

您可以看到生成的匯編代碼更加緊湊。請(qǐng)注意,需要以某種方式轉(zhuǎn)換該值以處理除1、2和3以外的其他值。但是,這應(yīng)該可以說明該概念。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

我忽略了通常不重要的這種低級(jí)優(yōu)化類型,并且可能因編譯器而異。

我想說的主要區(qū)別是可讀性。if / else非常靈活,但是當(dāng)您看到一個(gè)開關(guān)時(shí),您立即知道所有測(cè)試都針對(duì)同一個(gè)表達(dá)式。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

為了表現(xiàn)力,switch / case語句允許您將多個(gè)案例組合在一起,例如:


case 1,2,3: do(this); break;

case 4,5,6: do(that); break;

為了提高性能,編譯器有時(shí)可以將switch語句優(yōu)化為跳轉(zhuǎn)表。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
  • 3 回答
  • 0 關(guān)注
  • 1093 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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