!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とかっていうクラス作るか?