【问题标题】:How does return actually returns in C?return 如何在 C 中实际返回?
【发布时间】:2020-01-13 14:07:41
【问题描述】:

DAT_1001b50C 是一个数字,我对它进行位移。 现在我对以下行有疑问:

return DAT_1001b50C >> 0x10 & 0x7fff;

这行会返回吗

DAT_1001b50C >> 0x10
and
DAT_1001b50C >> 0x7fff

或者这会返回

(DAT_1001b50C >> 0x10) >> 0x7fff

【问题讨论】:

  • 你为什么不自己做一个快速测试呢?如果不能,为什么不添加括号来确定运算符的顺序?
  • 您似乎对& 的含义感到困惑。它是按位“与”运算符。这并不意味着“也”。
  • 此外,如果您要移动 0x7FFF,则顺序不会有任何区别,因为无论如何结果都会为零,除非您有某种超过 32K 位的超长整数数据类型……

标签: c return bit-manipulation bit


【解决方案1】:

两者都没有。 DAT_1001b50C >> 0x10 & 0x7fff(DAT_1001b50C >> 0x10) & 0x7fff。这会将DAT_1001b50C 的值右移16 位,并与0x7fff 执行按位与运算,从而保留低15 位并清除剩余位。

【讨论】:

  • 非常棒,我删除了我的第一条评论。
猜你喜欢
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多