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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

無break不需要判斷case嗎

完全就是扯,即使沒有break,執(zhí)行case3的時(shí)候不先要判斷3是不是num嗎?

正在回答

2 回答

題主這個(gè)問題很經(jīng)典,這其中涉及到編譯的問題。事先聲明,接下來我的回答都是我的個(gè)人理解,肯定會有不準(zhǔn)確的表述。

咱們現(xiàn)在看到的switch結(jié)構(gòu),一旦經(jīng)過編譯器處理后,指令的順序就大大不一樣了,編譯器會把所有的case判斷轉(zhuǎn)換成匯編指令放到一起,把分別執(zhí)行的語句也放到一起,加載到內(nèi)存中就是兩塊連續(xù)的存儲空間,一塊放判斷,一塊放動作。兩塊怎么聯(lián)系起來?通過給動作空間進(jìn)行標(biāo)號,程序執(zhí)行時(shí),(注意,這里的匯編指令就是判斷+跳轉(zhuǎn)),先判斷,一旦判斷符合,跳轉(zhuǎn)到相應(yīng)標(biāo)號的動作區(qū)域執(zhí)行動作,如果判斷不符合,接著下一條判斷(判斷+跳轉(zhuǎn))。再說說動作區(qū)域的執(zhí)行,要知道,動作區(qū)域的執(zhí)行也是從上往下一條條順序執(zhí)行的,所以,如果相應(yīng)的動作后面不加break,就會順序執(zhí)行下一條動作。我們可以理解成break被轉(zhuǎn)換成一條跳轉(zhuǎn)指令放到了動作區(qū)域里,只不過break不需要判斷跳轉(zhuǎn),它是直接跳轉(zhuǎn),跳轉(zhuǎn)的目的地也是動作區(qū)域的一個(gè)標(biāo)號,end,跳出。

列幾個(gè)網(wǎng)址,有時(shí)間看看。PS,別鉆牛角尖。

http://book.51cto.com/art/201312/421963.htm

http://blog.csdn.net/lixiangminghate/article/details/71171804?utm_source=gold_browser_extension

這個(gè)很好,注釋很完美。

http://blog.sina.com.cn/s/blog_5526d40f0100orrc.html? ? 這個(gè)文章后半段感覺不好,貌似作者自己在弄編譯器。


0 回復(fù) 有任何疑惑可以回復(fù)我~

首先是判斷”num是不是3“而不是判斷”3是不是num“
其次,從實(shí)現(xiàn)的角度,一旦任何一個(gè)case匹配了,他就會順序向下執(zhí)行”后大括號前的所有操作“,而忽略case和default

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕圣5475749 提問者

這也功能完全可以完善一點(diǎn)。改成執(zhí)行case后就默認(rèn)跳出。不需要break。不知道最初語言開發(fā)者怎么想的。這個(gè)在C里面就是這樣。但是我覺得這是個(gè)bug類的存在。一直存在了五十年
2017-08-10 回復(fù) 有任何疑惑可以回復(fù)我~
#2

decho 回復(fù) 慕圣5475749 提問者

避免寫重復(fù)代碼啊,如果多個(gè)case的操作是遞進(jìn)關(guān)系怎么辦→_→。。。 比如 case1:do1 case2:do2 case3:do3 default:clean 如果你默認(rèn)有break就變成 case1:do1;do2;do3;clean case2:do2;do3;clean case3:do3;clean default:clean 是不是很丑很不方便
2017-08-10 回復(fù) 有任何疑惑可以回復(fù)我~
#3

慕圣5475749 提問者

謝謝!是有這種情況。比如計(jì)算個(gè)稅的情況確實(shí)需要遞進(jìn)
2017-08-10 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

無break不需要判斷case嗎

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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