为什么这个不等式在 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