标题: C语言IF语句的条件判断问题 [打印本页]

作者: 李冬    时间: 2025-4-29 16:50
标题: C语言IF语句的条件判断问题
else if (38.1<=tw<=39)和else if (38.1<=tw&&tw<=39) 一样吗

作者: rundstedt    时间: 2025-4-29 22:35
前面的写法显然是错误的,后面的对。
作者: xiaobendan001    时间: 2025-4-30 07:24
一样的吧,但是前边的能过编译吗?
作者: 李冬    时间: 2025-4-30 11:22
xiaobendan001 发表于 2025-4-30 07:24
一样的吧,但是前边的能过编译吗?

能编译通过
作者: 1565654483dsh    时间: 2025-4-30 13:44
Python中表达式 38.1<=tw<=39 是合法的语法,它会按照我们的预期来判断 tw 是否在 38.1 和 39 之间,但在 C、C++、Java 等语言中,表达式会先计算 38.1 <= tw,这个比较操作会返回一个布尔值 1 和 0,然后再将这个布尔值与 39 进行比较
作者: zcyxh12345    时间: 2025-4-30 13:55
不知道条件的前提下,无法判断对错吧
作者: powerdruy    时间: 2025-4-30 14:08
(38.1 <= tw) 会先计算,结果是一个 布尔值:0(假)或 1(真)。
然后再判断这个 0 或 1 是否小于等于 39。
这显然不是你想表达的逻辑
作者: xiaobendan001    时间: 2025-4-30 16:44
试了真能编译过,不过6楼说的对,是按先后顺序运算的。结果和右边的是不一样的。
作者: shy332    时间: 2025-4-30 20:54
不一样
作者: shy332    时间: 2025-4-30 20:55
不一样,后面的if语句永远都不会执行
作者: ICELLL    时间: 2025-5-8 21:31
不一样,<=运算是双目运算符,你左边那个表达式不是和数学上的表达式一个意思,计算机会一步一步算,先算38.1<=tw,返回一个值,然后再算这个值和39的大小
作者: 索菲亚    时间: 2025-5-8 22:07
不一样,有优先级问题
作者: aking991    时间: 2025-5-9 08:30
建议你else if ((38.1<=tw)&&(tw<=39)) 这样写就能保证不会因为优先计算问题出错
作者: Nakioy    时间: 2025-5-9 09:54
最好还是用后面的
作者: 4444555558    时间: 2025-5-13 18:20
这两个写法 不一样,虽然它们的语义意图是一样的(都想表达 “tw 在 38.1 到 39 之间”),但语法上只有一个是合法并且正确的。  ✅ 正确写法: c 复制 编辑 else if (38.1 <= tw && tw <= 39) 这是 C 语言中判断一个值 tw 是否在 [38.1, 39] 区间内的标准写法。  ❌ 错误写法: c 复制 编辑 else if (38.1 <= tw <= 39)  // ❌ 错误 这个写法虽然在数学中是合法的区间写法(如:38.1 ≤ tw ≤ 39),但在 C 语言中它的解析方式不同,会导致错误逻辑。
作者: asongdashi    时间: 2025-5-18 23:02
完全不一样,前面的程序能运行吗?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1