c++ - comma operator in if condition -
int = 1, b = 0; if(a, b) printf("success\n"); else printf("fail\n"); if(b, a) printf("success\n"); else printf("fail");
this cpp file , got output in visual studio 2010
fail success
why behavior? please explain?
http://en.wikipedia.org/wiki/comma_operator:
in c , c++ programming languages, comma operator (represented token
,
) binary operator evaluates first operand , discards result, , evaluates second operand , returns value (and type).
in first if
:
if (a, b)
a
evaluated first , discarded, b
evaluated second , returned 0. condition false.
in second if
:
if (b, a)
b
evaluated first , discarded, a
evaluated second , returned 1. condition true.
if there more 2 operands, last expression returned.
if want both conditions true, should use && operator:
if (a && b)
Comments
Post a Comment