【发布时间】:2012-09-28 11:50:52
【问题描述】:
考虑以下代码(其中 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 值进行位移?
编辑:在 cmets 之后,这是一个更完整的示例:
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,那么在我的编译器上,两个代码都可以正常工作.. -
您的代码中没有第 68 行...老实说:如果您提供一个完整的示例,最好包括一个 main 方法,这将非常有帮助。作为@RohitJain,我无法重现您的问题。
-
是的,您应该将其添加到问题中:p