编程中注意运算符的优先级,如果不确定的话一定要使用括号,下面就是一个血例
int * countBitsWithDP(int num, int *returnSize)
{
int i;
int *res = newIntRaw(num + 1);
assert(num >= 0);
*returnSize = num + 1;
res[0] = 0;
for (i = 1; i <= num; ++i)
res[i] = res[i >> 1] + (i & 0x1); // 与 res[i >> 1] + i & 0x1
return res;
}
常常同意混淆的运算符优先级:
算数运算 > 移位运算 > 位运算 > 逻辑运算