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.