【发布时间】:2017-06-27 08:43:27
【问题描述】:
我注意到这段代码:
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->count[0] += ((UINT4)inputLen << 3)的结果与((UINT4)inputLen << 3)进行比较 -
我的错...括号太多
-
我们不要写
UINT4 u4 = inputLen << 3; context->count[0] += u4; if(context->count[0] < u4)。因为可以写烂代码,为什么还要写好代码? -
不,括号不要太多,对于那个代码,你绝对不应该少用。然而,一点空白可能会使它更具可读性。
-
@Yunnosch 请注意,除了
if()中的强制性括号外,我的重写如何使用零括号。