int 미만의 기본형 타입 byte, short, char 등의 경우 변수를 활용하여 연산하게 될 경우 int로 연산하게 되어 결과값을 다시 해당 변수 타입에 맞게 형변환 해줘야 하는것으로 알고 있습니다. ex) char ch = '0'; ch = ch+2; <---- 명시적 캐스팅을 하지 않을시 오류 발생 ch = (char)ch+2; 그런데 ch+=2; 로 처리할경우 오류가 발생하지 않더군요. ch+=2; 의 경우 ch=ch+2;와 같은 맥락인데 어째서 연산시 오류가 발생하지 않는것인가요?
## 덧셈 연산자의 반환 값 덧셈 연산자의 결과는 `int`타입입니다. 에러를 없애려면 캐스팅이 필요합니다. ``` // OK: ch + 2의 결과를 다시 캐스팅하여 대입 ch = (char) (ch + 2); ``` 같은 이유로, 아래의 코드는 에러를 발생시킵니다. ``` // char 타입 변수 선언 char ch = ‘0’; // ERROR: ch + 2 의 결과는 int이기 때문! ch = ch+2; <—- 명시적 캐스팅을 하지 않을시 오류 발생 // ERROR: ch + 2 의 결과는 int이기 때문! ch = (char)ch+2; ``` ## PS 질문 감사합니다. :)