为啥这个不等式在 C 中是 False 的? [复制]
Posted
技术标签:
【中文标题】为啥这个不等式在 C 中是 False 的? [复制]【英文标题】:Why is this inequality False in C? [duplicate]为什么这个不等式在 C 中是 False 的? [复制] 【发布时间】:2022-01-03 22:20:34 【问题描述】:任何人都可以告诉我为什么 -5<-2<-1
在 C 中返回 0
而我希望它返回 1
(True)?
printf("%d", -5<-2<-1);
【问题讨论】:
-5<-2
为真,即等于 1。而1 < -1
为假。
为什么你认为它应该是真的?我假设是因为您期望 -5<-2<-1
表示 (-5 < -2) && (-2 < -1)
。它不是。还有其他语言确实以这种方式工作,最著名的是 Python(它也只会评估一次 -2
)。但在 C 中,-5<-2<-1
表示 (-5 < -2) < -1
。
我想你在找(-5 < -2) && (-2 < -1)
谢谢大家。现在很清楚
【参考方案1】:
这个表达式
-5<-2<-1
等价于
( -5<-2 ) < -1
因为运算符
由于-5
小于-2
,那么子外显的值
( -5 < -2 )
是整数值1
。所以你有
1 < -1
这个表达式的结果是 0,即逻辑假。
来自 C 标准(6.5.8 关系运算符)
6 每个运算符(大于)、=(大于或等于)如果 指定的关系为真,如果为假,则为 0。结果有类型 诠释。
看来你的意思是- 5 < -2 && -2 < -1
【讨论】:
以上是关于为啥这个不等式在 C 中是 False 的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章