나 좀 이해시켜 줄 고수분 없나여 ㅠㅠㅠㅠㅠㅠㅠㅠ


byte a = 127 * 2;를 프린트하면 오류가 나는데
int b = 270000000 * 10;을 프린트하면 오류가 안 나고 쓰레기값이 나오는 이유

즉 둘 다 오버플로인데 하나는 오류, 다른 하나는 오류가 아닌 이유




참고로

byte x = 1;

byte y = 2;

byte z = x * y; 이런 거라면 byte변수 * byte 변수가 int 변수 * int 변수로 바껴서 byte z에 못 담아서 오류가 나는 건 알고 있는데


byte k = 3 * 4; 이렇게 숫자 * 숫자는 int로 안 바뀌고 오류도 안 나는 거로 알고 있거든


그래서 

byte a = 127 * 2;도 int로 자동형변환되지 않고 단순히 범위만 초과하는 거 아냐?


byte a = 127 * 2; 이게 오류면 int b = 270000000 * 10;도 오류고

byte a = 127 * 2; 이게 오류가 아니면 int b = 270000000 * 10;도 오류가 안 나야 하지 않나...



님들이 생각해도 이상한 것 같아 아니면 내가 뭔가 잘못알고 있다면

설명좀 해주라...