You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中a < x < b连续比较表达式为何始终为真?执行逻辑解析

为什么10 < i < 15的条件始终为真?

在C语言中,比较运算符是左结合的,编译器会把10 < i < 15按照从左到右的顺序拆解为:

(10 < i) < 15

C语言没有专门的布尔类型,逻辑判断的结果用整数表示:

  • 当10 < i成立时,结果为1
  • 当10 < i不成立时,结果为0

分两种情况分析:

  1. 当i <= 10时,10 < i的结果是0,此时表达式变为0 < 15,显然为真;
  2. 当i > 10时,10 < i的结果是1,此时表达式变为1 < 15,同样为真。

不管i取0到19之间的哪个值,整个表达式的结果都是真,所以循环里的printf会被执行每一次。

正确写法

要实现“i大于10且小于15”的逻辑,必须用逻辑与运算符&&结合两个比较表达式:

if ((10 < i) && (i < 15))

这样只有当i在11到14之间时,条件才会成立。

内容的提问来源于stack exchange,提问作者Crazy circuit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:42:05