編程短路分析
❶ C語言編程中短路現象的原理是什麼
C語言中的短路現象出現與邏輯運算中,包括邏輯與&&和邏輯或||。
1 邏輯與中的短路。
邏輯與的運算符為&&, 其運算規則為,對於
expr1 && expr2
只有當expr1和expr2同時為真(1)時,結果才為真(1)。
可以得到,如果expr1為假,那麼無論expr2值是什麼,結果都是假。
這種情況下,expr2的值就不重要了,於是當expr1為0(假)時,後續的expr2不會加入計算,而是被忽略,這就是邏輯與的短路現象。
2 邏輯或中的短路。
邏輯或的運算符為||, 其運算規則為,對於
expr1 || expr2
只有當expr1和expr2同時為假(0)時,結果才為假(0)。
可以得到,如果expr1為真,那麼無論expr2值是什麼,結果都是真。
這種情況下,expr2的值就不重要了,於是當expr1為1(真)時,後續的expr2不會加入計算,而是被忽略,這就是邏輯或的短路現象。
綜上,短路現象的出現,其實是和各自的運算規則相關的,如果第一個運算符已經可以確定運算結果,那麼第二個運算符就會被忽略,這樣的設置,可以提高系統運行的效率。
❷ 短路與的定義
短路與是java語言中的一個邏輯運算符,記作&&,與編程語言中的與邏輯相似,但具有短路性質。
符號為:&&。
A&&B, 當A為false時,不去計算B的值而直接返回false;當A為true時,計算B的值。 所謂短路性質,可以用代碼片段解釋如下:
int i=5;
boolean j=false&&(i++>5); // 看清這個表達式,想想看執行完這句後i的值應該多少
System.out.println(i); // java中輸出變數i的值,i的值為5,所以當第一個值為false並且看到後面的操作符為&&的時候,不再往下計算。
boolean j=false&(i++>5);
System.out.println(i); // 將會發現輸出的值為6,所以當第一個值為false並且看到後面的操作符為&的時候,還要往下計算
所以在Java編程中,對於&&和||,Java只看第一個操作數的值,對於&&,如果第一個值為false,那麼第二個不再計算,如果第一個值為true,那麼還要計算第二個值;對於||,如果第一個值為false,那麼還要計算第二個值,如果第一個值為true,那麼第二個值不再計算;對於&和|操作符,兩邊無論如何都計算。
編譯運行後,輸出結果為5。這就是短路與。短路與執行的順序是從左到右,在確定第一個表達式值為假之後就沒有必要執行第二個條件句的必要了。因為很明顯,不管第二個條件的真假,整個式子的布爾值一定為假。短路與會跳掉第二個條件句,不去執行它。基於這些原理,便出現了上述結果。在編程中靈活運用短路與,有很大的意義。