为什么这种不等式在 C 中是假的?[复制]

Why is this inequality False in C? [duplicate]

提问人:Sofia Lazrak 提问时间:11/26/2021 最后编辑:mchSofia Lazrak 更新时间:11/26/2021 访问量:114

问:

任何人都可以启发我为什么在 C 中返回,而我期望它返回 (True)?-5<-2<-101

printf("%d", -5<-2<-1);
C 数学 运算符 逻辑

评论

5赞 Damien 11/26/2021
-5<-2为 true,即等于 1。并且是假的。1 < -1
4赞 Karl Knechtel 11/26/2021
为什么你认为这应该是真的?我猜是因为你期望的意思是.事实并非如此。还有其他语言确实以这种方式工作,最著名的是 Python(它也只会评估一次)。但在 C 中,表示 。-5<-2<-1(-5 < -2) && (-2 < -1)-2-5<-2<-1(-5 < -2) < -1
3赞 Hollyol 11/26/2021
我想你正在寻找(-5 < -2) && (-2 < -1)
0赞 Sofia Lazrak 11/26/2021
谢谢大家。现在很清楚了

答:

3赞 Vlad from Moscow 11/26/2021 #1

此表达式

-5<-2<-1

相当于

( -5<-2 ) < -1

因为操作员<从左到右计算。

由于小于子外泄的值-5-2

( -5 < -2 )

是整数值。所以你有1

1 < -1

这个表达式的结果是 0,即逻辑上为 false。

来自 C 标准(6.5.8 关系运算符)

6 每个运算符<(小于)、>(大于)、<=(小于 或等于 ),并且 >= (大于或等于 )应得到 1,如果 指定关系为 true,如果为 false,则为 0。结果具有类型 int 中。

看来你的意思是- 5 < -2 && -2 < -1