c - Evaluation of logical operand -
if have following:
int = -10 && 0;
then c evaluate -10
1
because -10
different 0
, make comparation between 1 && 0
0
result? or let -10
, make comparation written?
instead if write:
int c = 10; int b = 11; int res = c > 10 && b == 11;
then c make this:
c > 10
false evaluates 0
while b == 11
true evaluates 1
then expression is:
0 && 1
0
result.
the operator &&
, ||
has short circuit behavior1. in
int = -10 && 0;
since left operand -10
, non-zero , hence true
, therefore right operand, i.e 0
checked. in
int res = c > 10 && b == 11;
since left operand evaluated false
, right operand not evaluated.
1 c11 6.5.13 (p4): if first operand compares equal 0
, second operand not evaluated.
Comments
Post a Comment