0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言中的短路現(xiàn)象

Q4MP_gh_c472c21 ? 來源:一口Linux ? 作者:土豆居士 ? 2020-09-29 14:39 ? 次閱讀

短路現(xiàn)象1

比如有以下表達(dá)式

a&&b&&c

只有a為真(非0)才需要判斷b的值;只有a和b都為真,才需要判斷c的值。

舉例

求最終a、b、c、d的值。

main() { inta,b,c,d; a=0; b=1; c=2; d=a++&&b++&&--c; printf("a=%db=%dc=%dd=%d ",a,b,c,d); }

因?yàn)閍++是先判斷a的值再自加,而a初始值為0, 所以(a++)為假,由短路現(xiàn)象可知&&后面式子b++和--c就都不會執(zhí)行;對于賦值語句,是先將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() { inta,b,c,d; a=0; b=1; c=2; d=a++||b++||--c; printf("a=%db=%dc=%dd=%d ",a,b,c,d); }

因?yàn)閍++是先判斷a的值再自加,而a初始值為0, 所以(a++)為假,由短路現(xiàn)象可知,還需要繼續(xù)判斷 || 后面的表達(dá)式b++,b++要先判斷b的值,b為1,所以b++為真,由短路現(xiàn)象可知,后面的式子--c就不在執(zhí)行;對于賦值語句,不再是將a的值賦值給d,而是將b先賦值給d然后a和b再自加,所以d的值為1,a最終為1,b最終為2。

執(zhí)行結(jié)果:

-END-

來源 | 一口Linux

作者 | 土豆居士

原文標(biāo)題:C語言中的短路現(xiàn)象

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137266

原文標(biāo)題:C語言中的短路現(xiàn)象

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    EE-62:在C語言中訪問短字內(nèi)存

    電子發(fā)燒友網(wǎng)站提供《EE-62:在C語言中訪問短字內(nèi)存.pdf》資料免費(fèi)下載
    發(fā)表于 01-07 14:02 ?0次下載
    EE-62:在<b class='flag-5'>C</b><b class='flag-5'>語言中</b>訪問短字內(nèi)存

    EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù)

    電子發(fā)燒友網(wǎng)站提供《EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù).pdf》資料免費(fèi)下載
    發(fā)表于 01-07 13:48 ?0次下載
    EE-128:<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的DSP:從<b class='flag-5'>C</b>調(diào)用匯編類成員函數(shù)

    C語言中申請的堆內(nèi)存能不能自動釋放

    C語言中申請的堆內(nèi)存能不能自動釋放?每次都要手動 free 太麻煩,也容易忘記。 學(xué)過 C++ 的同學(xué),應(yīng)該首先能想到智能指針。 但是這是C語言
    的頭像 發(fā)表于 11-27 09:33 ?150次閱讀

    C語言中的頭文件能不能重復(fù)包含

    C語言中的頭文件能不能重復(fù)包含? 比如代碼寫成這樣,stdio.h 連續(xù)包含了兩次。 #include #include int main(){ printf("helloworld
    的頭像 發(fā)表于 11-26 17:19 ?207次閱讀

    C語言中的socket編程基礎(chǔ)

    Socket編程簡介 Socket是一種通信機(jī)制,允許程序之間進(jìn)行通信。在C語言中,socket編程是網(wǎng)絡(luò)編程的基礎(chǔ)。通過使用socket,程序可以發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)不同計算機(jī)之間的通信
    的頭像 發(fā)表于 11-01 16:51 ?392次閱讀

    C語言中最常見的宏定義寫法

    如果讓你用C語言寫個宏定義,我相信大部分同學(xué)順手就能寫出define。
    的頭像 發(fā)表于 10-28 11:12 ?338次閱讀

    c語言中從左到右結(jié)合怎么看

    C語言中,操作符的結(jié)合性(Associativity)是指當(dāng)操作符在表達(dá)式中連續(xù)出現(xiàn)時,它們?nèi)绾闻c操作數(shù)結(jié)合的順序。對于大多數(shù)二元操作符(即需要兩個操作數(shù)的操作符),C語言遵循兩種基
    的頭像 發(fā)表于 08-20 11:42 ?1000次閱讀

    幫你避雷 C語言所謂的短路現(xiàn)象~

    C語言短路現(xiàn)象算是C語言的基礎(chǔ)吧,不過有時候代碼寫得不規(guī)范也容易引入一些bug,所以這些操作在工
    的頭像 發(fā)表于 03-27 08:09 ?436次閱讀
    幫你避雷 <b class='flag-5'>C</b><b class='flag-5'>語言</b>所謂的<b class='flag-5'>短路</b><b class='flag-5'>現(xiàn)象</b>~

    嵌入式系統(tǒng)中C語言結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用

    C語言中的數(shù)組只能允許程序員定義存儲相同類型數(shù)據(jù)。但是結(jié)構(gòu)是C語言編程中允許您存儲不同數(shù)據(jù)類型的數(shù)據(jù)。
    發(fā)表于 03-12 14:29 ?534次閱讀
    嵌入式系統(tǒng)中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結(jié)構(gòu)體的基礎(chǔ)實(shí)現(xiàn)與應(yīng)用

    C語言中的typedef的應(yīng)用

    C 語言提供了 typedef 關(guān)鍵字,您可以使用它來為類型取一個新的名字。下面的實(shí)例為單字節(jié)數(shù)字定義了一個術(shù)語 BYTE。
    發(fā)表于 03-06 11:34 ?422次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的typedef的應(yīng)用

    C語言#define的應(yīng)用

    C/C++ 編程語言中,當(dāng)程序被編譯時,被發(fā)送到編譯器,編譯器將程序轉(zhuǎn)換為機(jī)器語言,然后完成編譯并執(zhí)行該程序。預(yù)處理器也稱為宏預(yù)處理器。
    發(fā)表于 03-06 11:29 ?408次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>#define的應(yīng)用

    介紹C語言中錯誤處理和異常處理的一些常用的方法和策略

    C語言是一種低級的、靜態(tài)的、結(jié)構(gòu)化的編程語言,它沒有提供像C++或Java等高級語言中的異常處理機(jī)制,例如try-catch-finally
    的頭像 發(fā)表于 02-28 14:25 ?649次閱讀

    C語言中的可變參數(shù)介紹

    C 語言為這種情況提供了一個解決方案,它允許您定義一個函數(shù),能根據(jù)具體的需求接受可變數(shù)量的參數(shù)
    發(fā)表于 02-28 14:00 ?345次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的可變參數(shù)介紹

    C語言中的錯誤處理機(jī)制解析

    C 語言不提供對錯誤處理的直接支持,但是作為一種系統(tǒng)編程語言,它以返回值的形式允許您訪問底層數(shù)據(jù)。
    的頭像 發(fā)表于 02-26 11:19 ?537次閱讀

    枚舉有多大?c語言枚舉end的作用是什么?

    枚舉有多大?c語言枚舉end的作用是什么? 枚舉在C語言中是一種常見的數(shù)據(jù)類型,用于定義一組相互關(guān)聯(lián)的常量或者變量。它通常用于表示一系列可能的取值,使得程序更加易讀和易維護(hù)。在
    的頭像 發(fā)表于 01-19 14:19 ?645次閱讀