考慮下面的代碼(其中byteIndex是int):爪哇 - 位與整數偏移和字節
int bitNumber = b-(8*byteIndex);
bitMask = 0x8>>(byte)bitNumber;
當編譯該生成錯誤
error: possible loss of precision
(需字節,實測值INT) 。
代碼
int bitNumber = b-(8*byteIndex);
bitMask = 0x8>>2;
編譯罰款。
這裏有什麼問題,以及如何解決第一個例子允許通過int值進行位移的問題?
編輯:繼評論,這裏是一個更完整的例子:
48) int byteIndex;
49) byte bitMask;
50) int bitNumber;
// assign value to byteIndex
67) bitNumber = b-(8*byteIndex);
68) bitMask = 0x8>>bitNumber;
並給出了錯誤:
...MyClass.java:68: error: possible loss of precision
bitMask = 0x8>>bitNumber;
^
required: byte
found: int
1 error
真正的java錯誤有行號。 –
'bitMask'的類型是什麼?而'b'的類型呢? –
如果它們是'int'類型,那麼在我的編譯器中,這兩個代碼都可以正常工作。 –