鱼C论坛

 找回密码
 立即注册
查看: 93|回复: 4

[已解决]小白又来了4

[复制链接]
发表于 2024-8-12 01:51:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天有事忙,今天没学多少
请问c语言里
3 < a  < 9
是什么意思,和python的不一样(被惯坏力)
最佳答案
2024-8-12 03:59:39
表达式的求值过程
表达式 3 < a < 9 的计算顺序:

在 C 语言中,比较操作符 < 的优先级高于 < 操作符,所以表达式 3 < a < 9 会被分解成两个部分:
3 < a:这个比较操作会首先执行,结果是布尔值(在 C 语言中,true 和 false 分别对应整数 1 和 0)。
然后结果会被用作第二个比较操作的左操作数,与 9 进行比较。
示例:

假设 a 的值是 5。
3 < a 计算结果是 true(在 C 语言中 true 代表 1)。
因此,表达式变成 1 < 9,结果是 true(即 1)。
实际行为
在 C 语言中,表达式 3 < a < 9 实际上等价于 (3 < a) < 9。这通常不是我们期望的结果。正确的做法是使用逻辑与运算符 && 来进行范围检查:

if (3 < a && a < 9) {
    // a 在 3 和 9 之间
}
这样,你可以确保 a 的值同时满足两个条件,即大于 3 且小于 9。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-12 03:59:39 | 显示全部楼层    本楼为最佳答案   
表达式的求值过程
表达式 3 < a < 9 的计算顺序:

在 C 语言中,比较操作符 < 的优先级高于 < 操作符,所以表达式 3 < a < 9 会被分解成两个部分:
3 < a:这个比较操作会首先执行,结果是布尔值(在 C 语言中,true 和 false 分别对应整数 1 和 0)。
然后结果会被用作第二个比较操作的左操作数,与 9 进行比较。
示例:

假设 a 的值是 5。
3 < a 计算结果是 true(在 C 语言中 true 代表 1)。
因此,表达式变成 1 < 9,结果是 true(即 1)。
实际行为
在 C 语言中,表达式 3 < a < 9 实际上等价于 (3 < a) < 9。这通常不是我们期望的结果。正确的做法是使用逻辑与运算符 && 来进行范围检查:

if (3 < a && a < 9) {
    // a 在 3 和 9 之间
}
这样,你可以确保 a 的值同时满足两个条件,即大于 3 且小于 9。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-12 04:46:07 | 显示全部楼层
3 < a:先评估这个表达式。如果 a 大于 3,则结果为 1(真);否则为 0(假)。

1 < 9 或 0 < 9:接着评估这个结果与 9 的比较。无论是 1 还是 0,与 9 比较结果都为真。

没错,在C语言中,3 < a < 9 是两段式的!!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-12 16:29:37 | 显示全部楼层
执墨尘 发表于 2024-8-12 03:59
表达式的求值过程
表达式 3 < a < 9 的计算顺序:

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-12 16:30:18 | 显示全部楼层
小甲鱼的二师兄 发表于 2024-8-12 04:46
3 < a:先评估这个表达式。如果 a 大于 3,则结果为 1(真);否则为 0(假)。

1 < 9 或 0 < 9:接着评 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-18 14:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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