자바 시작한지 얼마안된 초보가 문의를 드립니다.
글쓴이: nana588 / 작성시간: 수, 2012/08/29 - 3:56오후
public class OperatorEx5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
byte b= 10;
System.out.println("b="+b);
System.out.println("~b="+~b);
System.out.println("~b+1="+~b+1);
}
이런식으로 작성하고 돌려보았을때
~b+1은 -10이 나와야합니다. 근데 111이 나오네요.
코딩을 확인할때 +(~b+1) 이렇게 하면 잘-10이 나오지만 +~b+1은 왜 111이 나오는지 이해할수가 없어서 문의를 드립니다. 답변 기달리겠습니다.
Forums:
"~b+1="+~b+1 =("~b+1="+(~b))+
"~b+1="+~b+1
=("~b+1="+(~b))+1
=("~b+1="+(-11))+1
=("~b+1="+"-11")+1
="~b+1=-11"+1
="~b+1=-11"+"1"
="~b+1=-111"
이 분 말을 좀 더 풀어서 설명하면, + 연산자가
이 분 말을 좀 더 풀어서 설명하면, + 연산자가 적용되는 순서 때문입니다.
첫번째 + 의 결과는 문자열("~b+1=-11")이 되고, 그 문자열에다 두번째 + 를 하면 "1"이라는 문자열이 덧붙겠죠.
만약
"~b+1="+(~b+1)
이라고 하셨으면, 예상하신 결과가 나왔겠죠.댓글 내용 지금 확인했습니다. 왜 111이 되는지를
댓글 내용 지금 확인했습니다. 왜 111이 되는지를 알겠네요 +1이 문자화되서 그런거였군요
감사합니다.
댓글 달기