Yes, due to the short-circuit behavior of the logical operator &&, in the case of the &&second expression is evaluated only when the first is true. Read the following:
6.5.13 The logical operator AND
4 & && left-to-right; . 0, .
From , C/++? ?
i > 0 (, i = 0), i > 0 , someFunc(arr[i-1], arr[i] ().
, if(i > 0 && someFunc(arr[i-1], arr[i])) , i - 1 > arr[]. , , , ( ).
@ if(1 || Foo())? :
if(a && b) - a false, b .if(a && b) - a true, b, false, false.if(a || b) - a - true, b , true.if(a || b) - a false, b, b - true, true.