if (eXPRession1 && expression2) ... 對于編譯器來說,等同于下面代碼之一:
if (expression1.operator&&(expression2)) ... // when operator&& is a // member function if (operator&&(expression1, expression2)) ... // when operator&& is a // global function 這似乎沒有什么不同,但是函數調用法與簡短求值法是絕對不同的。首先當函數被調用時,需要運算其所有參數,所以調用函數functions operator&& 和 operator時,兩個參數都需要計算,換言之,沒有采用簡短計算法。第二是C++語言規范沒有定義函數參數的計算順序,所以沒有辦法知道表達式1與表達式2哪一個先計算。完全與具有從左參數到右參數計算順序的簡短計算法相反。