int main()
{
int a=10,b=20;
char x=1,y=0;
if(a,b,x,y)
{
printf("EXAM");
}
}
Hi, Please let me know why output of this question is "Printed Nothing"..
Thankss.
int main()
{
int a=10,b=20;
char x=1,y=0;
if(a,b,x,y)
{
printf("EXAM");
}
}
Hi, Please let me know why output of this question is "Printed Nothing"..
Thankss.
The result of a,b,x,y
is y
(because the comma operator evaluates to the result of its right operand) and y is 0, which is false.
The comma operator returns the last statement, which is y
. Since y
is zero, the if-statement evaluates to false, so the printf
is never executed.
Because expression a,b,x,y
evaluates to y
, which in turn evaluates to 0
, so corresponding block is never executed. Comma operator executes every statement and returns value of last one. If you want logical conjunction, use &&
operator:
if (a && b && x && y) { ... }
Comma operator - evaluates 1st expression and returns the second one. So a,b,x,y
will return value stored in y, that is 0.
Others already mentioned that the comma operator returns the right-most value. If you want to get the value printed if ANY of these variables is true use the logical or:
int main()
{
int a=10,b=20;
char x=1,y=0;
if(a || b || x || y)
{
printf("EXAM");
}
}
But then be aware of the fact that the comma evaluates all expressions whereas the or operator stops as soon as a value is true. So with
int a = 1;
int b;
if(a || b = 1) { ... }
b has an undefined value whereas with
int a = 1;
int b;
if(a, b = 1) { ... }
b will be set to 1.