c++ - Confusing outcome of C conditional operator -
int a=1,b=2,c=3; int x=1; int y=10; = x ? b : c; cout<< a; // outputs 2 (the value of b) = y ? b : c; cout<< a; // outputs 2 (the value of b)
now, @ following.
a=0; x=0; = x ? b : c; cout<< a; // outputs 3 (the value of c !!!!)
why unusual behaviour ?? when , x both 0, expression evaluates false , otherwise, true. please explain.
because x
0.
recall ternary operator, if written condition ? : b
returns a
if condition
true , b
otherwise. using numbers, , number except 0 considered true
boolean.
x ? b : c
in case 0 ? 2 : 3
, , since 0
false
, evaluates 3. 3 gets assigned a
variable , printed - nothing unusual going on here.
Comments
Post a Comment