找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1041|回复: 15
收起左侧

C语言IF语句的条件判断问题

  [复制链接]
ID:709761 发表于 2025-4-29 16:50 | 显示全部楼层 |阅读模式
else if (38.1<=tw<=39)和else if (38.1<=tw&&tw<=39) 一样吗
回复

使用道具 举报

ID:879809 发表于 2025-4-29 22:35 | 显示全部楼层
前面的写法显然是错误的,后面的对。
回复

使用道具 举报

ID:1109793 发表于 2025-4-30 07:24 | 显示全部楼层
一样的吧,但是前边的能过编译吗?
回复

使用道具 举报

ID:709761 发表于 2025-4-30 11:22 | 显示全部楼层
xiaobendan001 发表于 2025-4-30 07:24
一样的吧,但是前边的能过编译吗?

能编译通过
回复

使用道具 举报

ID:1146851 发表于 2025-4-30 13:44 | 显示全部楼层
Python中表达式 38.1<=tw<=39 是合法的语法,它会按照我们的预期来判断 tw 是否在 38.1 和 39 之间,但在 C、C++、Java 等语言中,表达式会先计算 38.1 <= tw,这个比较操作会返回一个布尔值 1 和 0,然后再将这个布尔值与 39 进行比较
回复

使用道具 举报

ID:328075 发表于 2025-4-30 13:55 | 显示全部楼层
不知道条件的前提下,无法判断对错吧
回复

使用道具 举报

ID:108361 发表于 2025-4-30 14:08 | 显示全部楼层
(38.1 <= tw) 会先计算,结果是一个 布尔值:0(假)或 1(真)。
然后再判断这个 0 或 1 是否小于等于 39。
这显然不是你想表达的逻辑
回复

使用道具 举报

ID:1109793 发表于 2025-4-30 16:44 | 显示全部楼层
试了真能编译过,不过6楼说的对,是按先后顺序运算的。结果和右边的是不一样的。
回复

使用道具 举报

ID:702600 发表于 2025-4-30 20:54 | 显示全部楼层
不一样
回复

使用道具 举报

ID:702600 发表于 2025-4-30 20:55 | 显示全部楼层
不一样,后面的if语句永远都不会执行
回复

使用道具 举报

ID:1149928 发表于 2025-5-8 21:31 | 显示全部楼层
不一样,<=运算是双目运算符,你左边那个表达式不是和数学上的表达式一个意思,计算机会一步一步算,先算38.1<=tw,返回一个值,然后再算这个值和39的大小
回复

使用道具 举报

ID:656634 发表于 2025-5-8 22:07 | 显示全部楼层
不一样,有优先级问题
回复

使用道具 举报

ID:65956 发表于 2025-5-9 08:30 | 显示全部楼层
建议你else if ((38.1<=tw)&&(tw<=39)) 这样写就能保证不会因为优先计算问题出错
回复

使用道具 举报

ID:1149962 发表于 2025-5-9 09:54 | 显示全部楼层
最好还是用后面的
回复

使用道具 举报

ID:1138534 发表于 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 语言中它的解析方式不同,会导致错误逻辑。
回复

使用道具 举报

ID:1150877 发表于 2025-5-18 23:02 | 显示全部楼层
完全不一样,前面的程序能运行吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表