int 미만의 기본형 타입
byte, short, char 등의 경우
변수를 활용하여 연산하게 될 경우 int로 연산하게 되어
결과값을 다시 해당 변수 타입에 맞게 형변환 해줘야 하는것으로 알고 있습니다.
ex)
char ch = '0';
ch = ch+2; <---- 명시적 캐스팅을 하지 않을시 오류 발생
ch = (char)ch+2;
그런데 ch+=2; 로 처리할경우 오류가 발생하지 않더군요.
ch+=2; 의 경우 ch=ch+2;와 같은 맥락인데 어째서 연산시 오류가 발생하지 않는것인가요?
sehongpark님의 답변
## 덧셈 연산자의 반환 값
덧셈 연산자의 결과는 `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
질문 감사합니다. :)