gpt4 book ai didi

C:具有多个运算符的条件表达式

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:43 25 4
gpt4 key购买 nike

在 C 中,这样的事情合法吗?

if (0<=x<=y<=y+1) then ...

还是我必须用 && 和 || 和方括号将它分开?

最佳答案

这是合法的,但可能不会达到您的预期。它被视为您写过:

if (((0 <= x) <= y) <= y+1)

(0 <= x)评估为 0 或 1; 0 或 1 与 y 进行比较,产生另一个 0 或 1 个结果;这是与 y+1 进行比较, 产生最后的 0 或 1 用于控制 if声明。

如果您的目标是确保 x不小于零或大于 y ,并确保 y不大于 y+1 ,然后你会写:

if (0 <= x && x <= y && y <= y+1)

我注意到 y <= y+1通常是真的。如果y是无符号类型且等于该类型的最大值,则 y+1为 0。如果 y是有符号类型并且等于该类型的最大值,那么您可以通过向其加 1 来调用未定义的行为。如果幸运的话,y+1将换行到签名类型的最大负值,但你不能依赖它(所以也许这使得它“如果你不走运”,因为错误不一定会在它导致重大问题之前出现)。

关于C:具有多个运算符的条件表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12546731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com