I implemented the following program in C
#include
int main()
{
int a = 10 ;
if(0 < a < 5)
{
Since 0 is less than 10, 0 < a would always evaluates to 1 , which is less than 5, making 0 < a < 5 always true. Change your condition to
if(0 < a && a < 5) {...}
Unlike Python (which has operator chaining), C evaluates the condition as:
(0 < a) < 5
The result of (0 < a) is either 0 or 1, both of which are less than 5, so the overall condition is true.
In C, a range test must be written:
0 < a && a < 5
Note that the Python script:
for a in range(-1,7):
if 0 < a < 5:
print a, " in range"
else:
print a, " out of range"
produces the output:
-1 out of range
0 out of range
1 in range
2 in range
3 in range
4 in range
5 out of range
6 out of range
The 'equivalent' C program using the same if condition would, of course, produce the answer 'in range' for each value.
if(x<y<z)
It actually is valid syntax, but it doesn't do what you want.
Realize that x<y returns a bool, i.e. true or false. You then compare it
against whatever value "z" has. So the intention of "x<y<z" looks wrong.
It can be:
if(x < y && y < z)
Because 0 < a evaluates to 1.
Use:
a > 0 && a < 5
if you want to test if a is greater than 0 and lower than 5.