【问题标题】:Is this comparison dummy?这个比较是假的吗?
【发布时间】:2017-06-27 08:43:27
【问题描述】:

RFC1321

我注意到这段代码:

if ((context->count[0] += ((UINT4)inputLen << 3)) < ((UINT4)inputLen << 3))
    context->count[1]++;
context->count[1] += ((UINT4)inputLen >> 29);

比较看不懂:

((UINT4)inputLen << 3)) < ((UINT4)inputLen << 3))

好像总是返回0,对吧?

【问题讨论】:

  • '因为您错误地评估了条件。正在将context-&gt;count[0] += ((UINT4)inputLen &lt;&lt; 3) 的结果与((UINT4)inputLen &lt;&lt; 3) 进行比较
  • 我的错...括号太多
  • 我们不要写UINT4 u4 = inputLen &lt;&lt; 3; context-&gt;count[0] += u4; if(context-&gt;count[0] &lt; u4)。因为可以写烂代码,为什么还要写好代码?
  • 不,括号不要太多,对于那个代码,你绝对不应该少用。然而,一点空白可能会使它更具可读性。
  • @Yunnosch 请注意,除了if() 中的强制性括号外,我的重写如何使用零括号。

标签: c md5 md5sum


【解决方案1】:

没有这样的比较。看看括号是如何配对的:

是的

(X < ((UINT4)inputLen << 3))

X =

(context->count[0] += ((UINT4)inputLen << 3))

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多