自己犯的一個錯誤。。

在做一道題目的時候,寫了下面一行代碼:

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

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

但是,實際上,因爲  +的優先級高於 <<, 實際的結果是 把 ret 左移 ret+data[i]位。。

查了半天才發現。。

代碼應該寫成:

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

或者:

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

 

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