有人可以解释为什么我不能以这种方式乘以两个字节?乘以两个字节
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