C語言短路現象算是C語言的基礎吧,不過有時候代碼寫得不規范也容易引入一些bug,所以這些操作在工程師實踐中盡量少用。 雖然下面找的例子比較簡單,但如果后面是其他表達式,或許你并不會那么容易分辨。并且,你可能會斬釘截鐵的說,我絕對不會這樣編寫我的代碼,但你確定的同事不會這樣?你的前同事不會? 好了,下面的案例來源于網絡,僅供參考: 短路現象1 比如有以下表達式:
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); } 因為a++是先判斷a的值再自加,而a初始值為0, 所以(a++)為假,由短路現象可知&&后面式子b++和--c就都不會執行;對于賦值語句,是先將a的值賦值給d,然后再自加,所以d的值為0,a最終為1。 執行結果:
短路現象2
比如有以下表達式:
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); } 因為a++是先判斷a的值再自加,而a初始值為0, 所以(a++)為假,由短路現象可知,還需要繼續判斷 || 后面的表達式b++,b++要先判斷b的值,b為1,所以b++為真,由短路現象可知,后面的式子--c就不在執行;對于賦值語句,不再是將a的值賦值給d,而是將b先賦值給d然后a和b再自加,所以d的值為1,a最終為1,b最終為2。 執行結果:
審核編輯:黃飛
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
短路
+關注
關注
5文章
532瀏覽量
31013 -
C語言
+關注
關注
180文章
7604瀏覽量
136692
原文標題:簡單卻又容易掉坑!C語言的短路現象
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
檢查與電機連線是否有短路現象
FD-B系列故障代碼故障代碼 故障現象/類型 故障原因 解決對策occ 交流電機驅動偵測輸出側有異常突增的過電流產生檢查電機額定與電流驅動器額定是否相匹配檢查交流電機驅動器U-V-W見有無短路
發表于 09-03 06:07
鉛酸蓄電池短路有哪些現象?
鉛酸蓄電池短路有哪些現象
(1) 開路電壓低,閉路電壓 ( 放電 ) 很快達到終止電壓。 (2) 大電流放電時,端電壓迅速下降到零。 (3) 開
發表于 10-24 13:46
?3316次閱讀
鉛蓄電池短路現象及原因
鉛蓄電池短路現象及原因
鉛蓄電池的短路系指鉛蓄電池內部正負極群相連。鉛蓄電池短路現象主要表現在以下幾個方面:
(1)開路電壓低,
發表于 10-28 11:24
?773次閱讀
C語言中的短路現象
短路現象1 比如有以下表達式 abc 只有a為真(非0)才需要判斷b的值;只有a和b都為真,才需要判斷c的值。 舉例 求最終a、b、c、d的值。 main() { inta,b,
電機匝間短路的現象 電機匝間短路的原因
電機匝間短路是指電機線圈中的兩個相鄰匝之間發生了短路。這種現象會導致電機出現故障,嚴重的情況下可能會導致電機無法正常工作。
發表于 03-19 15:16
?1.3w次閱讀
什么是短路,什么是接地故障現象
我們所說的短路,其實就是指相線之間、相線與中性線之間的直接觸碰,產生的電流就是短路故障電流。由于短路點的電阻不是很大,并且線路阻抗也同樣是比較小的,因此,短路電流也就很大。
發表于 08-02 09:38
?3080次閱讀
電源變壓器短路會出現什么現象
電源變壓器短路是指電路中有兩個本來不應該直接相接的線路出現了導通狀態,這會導致電源電壓驟降或電源短路過流,從而對電子設備造成損壞。以下是對電源變壓器短路現象的詳細分析,涵蓋其表現、原因
評論