Может кто-нибудь объяснить мне, почему я не могу умножить два байта таким образом?Умножение двух байтов
byte a = 1;
byte b = 1;
byte c = a*b;
или
byte a = 1;
byte b = 1;
short c = a*b;
Почему я должен сделать это таким образом?
byte a = 1;
byte b = 1;
byte c = (byte)(a*b);
или
byte a = 1;
byte b = 1;
int/double/float/long c = a*b;
считают, что '255 * 255 = 65535', который слишком велик, чтобы поместиться в байт ... –
@MarcB' 255' слишком велик, чтобы поместиться в 'byte' (он подписан на Java) и' 255 * 255' '65025'. – rgettman
Это несоответствие языка. Нельзя гарантировать, что произведение двух 'int' не будет помещено в' int', но 'int = int * int' разрешено без кастования. – khelwood