为什么这个不等式在 C 中是假的?
Why is this inequality False in C?
任何人都可以启发我为什么在 C 中 -5<-2<-1
returns 0
而我期望它 return 1
(True)?
printf("%d", -5<-2<-1);
这个表达式
-5<-2<-1
相当于
( -5<-2 ) < -1
因为运算符 < 从左到右求值。
由于-5
小于-2
则子表达式的值
( -5 < -2 )
是整数值 1
。所以你有
1 < -1
并且此表达式的结果为 0,即逻辑错误。
来自 C 标准(6.5.8 关系运算符)
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.
你的意思好像是- 5 < -2 && -2 < -1
任何人都可以启发我为什么在 C 中 -5<-2<-1
returns 0
而我期望它 return 1
(True)?
printf("%d", -5<-2<-1);
这个表达式
-5<-2<-1
相当于
( -5<-2 ) < -1
因为运算符 < 从左到右求值。
由于-5
小于-2
则子表达式的值
( -5 < -2 )
是整数值 1
。所以你有
1 < -1
并且此表达式的结果为 0,即逻辑错误。
来自 C 标准(6.5.8 关系运算符)
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.
你的意思好像是- 5 < -2 && -2 < -1