短路現(xiàn)象1
比如有以下表達(dá)式
?a?&&?b?&&?c
只有a為真(非0)才需要判斷b的值;只有a和b都為真,才需要判斷c的值。
舉例
求最終a、b、c、d的值。
main()
{
?int?a,b,c,d;
?
?a?=?0;?
?b?=?1;?
?c?=?2;
?d?=?a++?&&?b++?&&?--c;
?
?printf("a=%d?b=%d?c=%d?d=%d\n",a,b,c,d);
}
因?yàn)閍++是先判斷a的值再自加,而a初始值為0, 所以(a++)為假,由短路現(xiàn)象可知&&后面式子b++和--c就都不會(huì)執(zhí)行;對(duì)于賦值語句,是先將a的值賦值給d,然后再自加,所以d的值為0,a最終為1。
執(zhí)行結(jié)果:
短路現(xiàn)象2
比如有以下表達(dá)式
a?||?b?||?c
只要a為真(非0)就不必判斷b和c;只有a為假,才需要判斷b的值;只有a和b都為假,才有必要判斷c的值。
舉例
求最終a、b、c、d的值;
main()
{
?int?a,b,c,d;
?
?a?=?0;?
?b?=?1;?
?c?=?2;
?d?=?a++?||?b++?||?--c;
?
?printf("a=%d?b=%d?c=%d?d=%d\n",a,b,c,d);
}
因?yàn)閍++是先判斷a的值再自加,而a初始值為0, 所以(a++)為假,由短路現(xiàn)象可知,還需要繼續(xù)判斷 || 后面的表達(dá)式b++,b++要先判斷b的值,b為1,所以b++為真,由短路現(xiàn)象可知,后面的式子--c就不在執(zhí)行;對(duì)于賦值語句,不再是將a的值賦值給d,而是將b先賦值給d然后a和b再自加,所以d的值為1,a最終為1,b最終為2。
執(zhí)行結(jié)果:
-END-
來源 | 一口Linux
作者 | 土豆居士
|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|
|?如有侵權(quán),請(qǐng)聯(lián)系刪除?|
【1】一位大學(xué)生講述代碼辛酸史:我是何時(shí)開始突飛猛進(jìn)的
【2】26歲當(dāng)上985博導(dǎo),電子科技大學(xué)這位姐姐厲害了!
【3】2020 中國高校畢業(yè)生月薪排名
【4】大佬故事:初中開始學(xué)編程,大學(xué)畢業(yè)后直接進(jìn)微軟...
【5】中科院大學(xué)本科生9個(gè)月成功設(shè)計(jì)出64位處理器:已成功流片
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!