Anyone can enlighten me on why -5<-2<-1
returns 0
in C when I would expect it to return 1
(True)?
printf("%d", -5<-2<-1);
Anyone can enlighten me on why -5<-2<-1
returns 0
in C when I would expect it to return 1
(True)?
printf("%d", -5<-2<-1);
This expression
-5<-2<-1
is equivalent to
( -5<-2 ) < -1
because the operator < evaluates left to right.
As -5
is less than -2
then the value of the sub-exoression
( -5 < -2 )
is integer value 1
. So you have
1 < -1
and the result of this expression is 0 that is logical false.
From the C Standard (6.5.8 Relational operators)
6 Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false. The result has type int.
It seems you mean - 5 < -2 && -2 < -1