短路求值
作為"&&"和"||"操作符的運算元表達式,這些表達式在進行求值時,只要最終的結果已經可以確定是真或假,求值過程便告終止,這稱之為短路求值。這是這兩個操作符的一個重要屬性。假如expr1和expr2都是表達式,並且expr1的值為0,
求值過程
在下面這個邏輯表達式的求值過程中:
expr1 && expr2
expr2將不會進行求值,因為整個邏輯表達式的值已經可以確定為0。 類似地,如果expr1的值不是0,那么在下面的這個邏輯表達式的求值過程中:
expr1 || expr2
expr2將不會進行求值,因為整個邏輯表達式的值已經確定為1。
下面是一個簡單的可能會出現短路求值的例子。假如我們需要處理的字元數量不超過5個。
int cnt =0;
while (++cnt<=5&&(c=getchar())!=EOF)
{
...
當表達式++cnt<=5的值是假時,下一個字元就不會被讀取。