以下代码:
private const uint FIRMWARE_DOWNLOAD_ADDRESS = 0x00001800;
public void someFunc(){
byte[] command = new byte[16];
command[11] = (byte)(FIRMWARE_DOWNLOAD_ADDRESS >> 24);
command[10] = (byte)(FIRMWARE_DOWNLOAD_ADDRESS >> 16);
command[9] = (byte)(FIRMWARE_DOWNLOAD_ADDRESS >> 8);
command[8] = (byte)(FIRMWARE_DOWNLOAD_ADDRESS); //error: Overflow in constant value computation
}引发错误Overflow in constant value computation。
为什么?据我所知,0x00001800 <= 0xffffffff应该不会发生溢出。
另外三行为什么不抛出一个错误呢?我试着做:
command[8] = (byte)(FIRMWARE_DOWNLOAD_ADDRESS >>0);认为正确的shift操作符正在以某种方式检查溢出条件,但这仍然会给出相同的错误。
发布于 2016-03-07 17:17:47
https://stackoverflow.com/questions/35849577
复制相似问题