1. WHAT IS CASTING?

캐스팅은 프로그래밍에서 변수나 값의 자료형을 변경하는 것을 의미합니다. 예를 들어, 정수형 변수를 실수형 변수로 변환하거나, 실수형 변수를 정수형 변수로 변환하는 것이 캐스팅의 예입니다. 그리고 캐스팅은 다음과 같이 명시적 캐스팅과 암시적 캐스팅 두 가지 유형으로 나눌 수 있습니다.

  1. 암시적 캐스팅

변수나 값의 자료형이 컴파일러에 의해 자동으로 변환되는 것입니다. 이를 자동 형변환 또는 자동 캐스팅이라고도 합니다. 예를 들어, 정수형 변수와 실수형 변수 간의 연산을 수행할 때, 정수형 변수가 실수형 변수로 자동으로 변환됩니다.

  1. 명시적 캐스팅

사용자가 직접 자료형을 지정하여 변수나 값의 자료형을 변환하는 것입니다. 이를 수동 형변환 또는 수동 캐스팅이라고도 합니다. 예를 들어, 정수형 변수를 실수형 변수로 변환할 때, 명시적으로 캐스팅 연산자를 사용하여 변환할 자료형을 지정해야 합니다.

  1. SIGN EXTENSION

sign extension은 부호 확장이라고도 불립니다. 이 부호 확장은 캐스팅을 언급할 때 항상 나오는 단짝같은 친구입니다. 이 부호 확장은 데이터 타입에서 보다 큰 데이터 타입으로 형식을 변환할때 사용됩니다. 그리고 부호가 있는 정수형 자료는 최상위 비트가 부호 비트로 됩니다.

만약 부호가 있는 정수형 자료를 보다 큰 자료형으로 캐스팅한다면, 최상위 비트가 부호에 따라 부호확장이 일어납니다. 그 종류는 두 가지가 있습니다. 만약 최상위 비트가 1이면 확장되는 모든 비트는 1로 채워집니다. 그 반대로 최상위 비트가 0이라면 확장되는 모든 비트는 0으로 채워집니다.


위의 설명을 읽어보면, 많은 분들이 ‘캐스팅은 자료형을 변경하는 것이고, 캐스팅을 사용자가 얼마나 의도하느냐에 따라 그 유형이 나뉘는 것이구나!’ 그리고 ‘아, 부호 확장이라는 것이 함께 사용될 수 있구나!’ 라고 책상 가장자리로 캐스팅을 밀어내시지 않나 싶습니다. 하지만 캐스팅은 신뢰성의 측면에서 꽤 중요한 역할을 하고 있습니다.

얼마나 중요한가에 대한 내용으로는 추상적으로 길게 떠들 수 있지만, ‘百聞不如一見’ 라고 했습니다. 여러분들도 왜 캐스팅에 대해 조금 더 신경써야할지 직접 예를 확인하는 것을 좋아하리라 생각합니다.