As we all know that Associativity of assignment operator is from right to left but
in the given code output should be zero if we go from right to left but output is 1 .
main()
{
int a=3,b=2;
a=a==b==0;
printf("%d",a);
}
How output is coming out to be 1 if we go by right to letf??
If we go by right to left then (b==0) should be Evaluated first and gives result 0 and then expression (a==0) is Evaluated also gives 0 and at last a’s value will be 0.
Assignment is done RTL, but equality (
==) isn’t.The statement is actually:
The right hand side of the assignment is evaluated from left to right. In steps, this is what’s happening:
a == bis00 == 0is11is assigned toa