요거 왜 컴파일 안되죠 --;
낮선검객
public class Test
{
public static void main(String args[])
{
byte b=3;
b=b+7;
System.out.println(b);
}
}
요거 컴파일하며 컴파일에러가 나는데요
Test.java:6: possible loss of precision
found : int
required: byte
b=b+7;
요렇게 나옵니다;;
대충 type cast가 안되서 그런것같은데
컴파일 에러 안나게 할려면 어떻게 해야하나요 -0-
-
볼수록매력
7 이라고 적으면 이놈을 int temp = 7; 요렇게 번역을 해버리기 땜시롱
b + 7 은 byte 와 int 의 덧셈이 됩니다.
그러면 int 가 더 큰 범위를 가지니까 결과값을 자동으로 int 로 격상되는데
int 를 더 작은 b에다가 넣으려니까 에러가 발생하는군요. -
나려
정수형의 연산의 결과는 기본적으로 int 형이 됩니다. 10 은 byte 형이 될 수 있습니다. 그러나, b + 7 은 int 형입니다.
참고로, 모든 실수형의 연산은 기본적으로 double 형이 됩니다. -
글고운
뭐가 왜 에러가 나는지 알려주세요..
-
미련곰팅이
움.. 아닌가-_-;; 그렇담 b = 10; 이것도 에러나야하지않나요?? 기본정수는 int니까.. b= (byte)10; 이렇게 해야하지않나요??
-
핑크빛애교
음.. 이해됬습니다 ㅎㅎ b+7이 int형이니까 byte에 넣을수없네요,, 그래서 byte로 형변환 해준다음에 너어주는거군요 감사합니다^^
-
유키
b = (byte)( b + 7 );