【问题标题】:How to understand the purpose of this function ?如何理解这个函数的目的?
【发布时间】:2021-10-11 12:59:02
【问题描述】:
bool isEqualOrBiggerUint32(uint32_t src, uint32_t dest)
{
    return (src - dest < 0x7fffffff);
}

我认为这个功能是比较destsrc
但是,为什么我们要在这个函数中使用 0x7fffffff 呢?
谢谢

【问题讨论】:

  • 我发现函数的名称和参数有点混乱。
  • 我“解释”0x7fffffff,而不是公式 ;-)
  • 函数是你写的吗?它使简单的事情变得过于复杂和混乱。从它的名字来看,你为什么不能return src &gt;= dest;(或者反过来)?为什么要使用函数?
  • 这段代码是错误的(如果我们假设它是按照函数名所说的那样做的话)。例如,如果 src == 0xffffffffdst == 0 则它们的差异将给出 0xffffffff 并且函数将错误地返回 false。
  • @Lundin 我想它对于比较可以换行的数字(如 TCP 序列号)并且预计会靠近在一起很有用。但在这种情况下,它的名称具有误导性。

标签: c computer-science


【解决方案1】:

0x7fffffff 只是十进制数 2147483647 的紧凑十六进制表示。

如果表达式 (src - dest) 小于 0x7fffffff(十进制表示为 2147483647),此函数将仅返回 True。否则它将返回 False 作为布尔值。

【讨论】:

    猜你喜欢
    • 2020-07-31
    • 2018-01-01
    • 1970-01-01
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多