自己犯的一个错误。。

在做一道题目的时候,写了下面一行代码:

ret = ret << 8 + data[i];

本意是把 ret的值左移8位,然后加上 data[i].

但是,实际上,因为  +的优先级高于 <<, 实际的结果是 把 ret 左移 ret+data[i]位。。

查了半天才发现。。

代码应该写成:

ret = (ret << 8) + data[i];

或者:

ret = ret << 8 | data[i];

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章