Because of left-to-right associativity of <
operator the expression condition (0.0 < a < 1.0)
means ((0.0 < a) < 1.0)
== 1 < 1.0
or 0 < 1.0
depending on value of a
.
So no, its not identical to if (0.0 < a && a < 1.0)
(perhaps you might confusing from Python compassion rule) but in C it will be interpenetrated as I explained above.
A difference you can observe in an example --- 0.0 < a < 1.0
== true
when a
== 0.0
, where as (0.0 < a && a < 1.0)
== false, for a
== 0.0
, below is my code (read comments):
#include<stdio.h>
void print_(int c){
c ? printf("True
"):
printf("False
");
}
int main(void){
float a = 0.0f;
print_(0.0f < a < 1.0f); // 0.0 < 0.0 < 1.0f == 0 < 1.0f == True
print_(0.0f < a && a < 1.0f); // 0.0f < 0.0f && ... == False && ... = False
return 0;
}
output:
True
False
Check its working @Ideone
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…