Diary/2004-6-1
Javaの暗黙のcast
Javaの暗黙のキャストは本当に怖い
内部では、演算はint型で実行されているようで、
たとえば、
byte a = (byte)0xfe; byte b = (byte)0xfe; short c; c = a + b;
というようなコードでは、
"possible loss of precision"とか"精度が落ちている可能性"
というエラーが出力される。
とりあえず、コンパイルをとおすためには、
c = (short)(a+b);
と明示的にキャストしなければいけない
ただし、この場合cの値は-4になってしまう
byteは符号付の型なので正しいのだが、
0x1fcの値を答えとして得たいような場合には
c = (short)((((int)a)&0x00ff) + (((int)b)&0x00ff))
とか、しなければいけない。
Lispもびっくりの括弧の数。
うーん、UBYTEとかUINTとかっていうクラス作るか?