提问人:Sofia Lazrak 提问时间:11/26/2021 最后编辑:mchSofia Lazrak 更新时间:11/26/2021 访问量:114
为什么这种不等式在 C 中是假的?[复制]
Why is this inequality False in C? [duplicate]
问:
任何人都可以启发我为什么在 C 中返回,而我期望它返回 (True)?-5<-2<-1
0
1
printf("%d", -5<-2<-1);
答:
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
评论
-5<-2
为 true,即等于 1。并且是假的。1 < -1
-5<-2<-1
(-5 < -2) && (-2 < -1)
-2
-5<-2<-1
(-5 < -2) < -1
(-5 < -2) && (-2 < -1)