在做一道题目的时候,写了下面一行代码:
ret = ret << 8 + data[i];
本意是把 ret的值左移8位,然后加上 data[i].
但是,实际上,因为 +的优先级高于 <<, 实际的结果是 把 ret 左移 ret+data[i]位。。
查了半天才发现。。
代码应该写成:
ret = (ret << 8) + data[i];
或者:
ret = ret << 8 | data[i];
在做一道题目的时候,写了下面一行代码:
ret = ret << 8 + data[i];
本意是把 ret的值左移8位,然后加上 data[i].
但是,实际上,因为 +的优先级高于 <<, 实际的结果是 把 ret 左移 ret+data[i]位。。
查了半天才发现。。
代码应该写成:
ret = (ret << 8) + data[i];
或者:
ret = ret << 8 | data[i];