Dlaczego nie mogę dodać dwóch bajtów i uzyskać int, a mogę dodać dwa ostatnie bajty?
public class Java{
public static void main(String[] args){
final byte x = 1;
final byte y = 2;
byte z = x + y;//ok
System.out.println(z);
byte a = 1;
byte b = 2;
byte c = a + b; //Compiler error
System.out.println(c);
}
}
Jeśli wynik wyrażenia obejmującego cokolwiek o rozmiarze mniejszym lub większym jest zawsze int, nawet jeśli suma dwóch bajtów mieści się w bajcie.
Dlaczego tak się dzieje, gdy dodajemy dwa ostatnie bajty, które mieszczą się w bajcie? Nie ma błędu kompilatora.