서로 다른 타입간의 대입이나 연산을 할 때, 형변환으로 타입을 일치시키는 것이 원칙이다.
하지만, 경우에 따라 편의상의 이유로 형변환을 생략할 수 있다. 그렇다고 해서 형변환이
이루어지지 않는 것은 아니고, 컴파일러가 생략된 형변환을 자동적으로 추가한다.
float f = 1234; // float f = (float) 1234; 와 같다
int i = 3;
double d= 1.0 + i; //double d = 1.0 + (double) i와 같다.
이처럼 연산과정에서 자동적으로 발생하는 형변환을 산술 변환이라 한다.
컴파일러는 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환한다.
표현범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우에는 값 손실이 없으므로 표현범위가 더 넓은 쪽으로 형변환된다.