在做一道題目的時候,寫了下面一行代碼:
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];