算数运算符(+-*/)优先级>移位运算>位运算>逻辑运算

编程中注意运算符的优先级,如果不确定的话一定要使用括号,下面就是一个血例

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;
}

常常同意混淆的运算符优先级:

算数运算 > 移位运算 > 位运算 > 逻辑运算

你可能感兴趣的:(BUG记录)