강제 형변환은 자동 형변환처럼 C 컴파일러가 내부적으로 변환하는 것이 아니라 프로그래머가 강제로 하는 자료형의 변환을 말합니다. 즉, 프로그램에서 이미 정의된 자료형을 강제적으로 다른 자료형으로 변환하는 것을 의미합니다. 괄호 연산자(())를 이용해서 다음과 같은 형식을 취하면 강제 형변환이 됩니다.
다음 예제는 강제 형변환의 필요성을 보여주는 코드를 나타내고 있습니다.
9행부터 10행까지에서 numl/num2는 정수형 정수형입니다. 몫이 3입니다. 그래서 result-형태가 되는데 바로 앞에서 배웠던 대입 연산자 기준의 자동 형변환이 이루어집니다. 대입자를 기준으로 오른쪽 값이 왼쪽 값의 자료형으로 자동 형변환이 된다고 하였으므로 3이 double형으로 되어서 변수 result에 3,000000이 저장되고 출력됩니다. 예상한 결과는3.3333333인데 자동 형변환 때문에 데이터 손실이 발생합니다.
12행에서 변수 num1을 실수형으로 강제로 변환합니다. 그러면 실수형/정수형이 되는데,변환의 우선순위에 의해서 연산에 참여하는 피연산자의 자료형을 맞추기 위해 변수 num2를 실수형으로 자동으로 변환하게 됩니다. 결국 실수형/실수형이 되어서 변수 result에 3.33333이 저장되고 출력됩니다.
15행에서 변수 num2를 실수형으로 강제로 변환합니다. 그러면 정수형/실수형이 되고, 변환의 우선순위에 의해서 연산에 참여하는 피연산자의 자료형을 맞추기 위해 변수 num1을 실수형으로 자동으로 변환하게 됩니다. 결국 실수형/실수형이 되어서 변수 result에 3.333333이 저장되고 출력됩니다.
18행에서 변수 numl과 num2를 모두 실수형으로 강제로 변환합니다. 그러면 실수형이 되어 변수 result에 3.333333이 저장되고 출력됩니다.
이처럼 강제 형변환은 데이터의 손실을 최소화하기 위해 피연산자의 자료형을 프로직접 변환해야 하는 경우에 사용되는 방법입니다
'프로그래밍언어 > C언어' 카테고리의 다른 글
반복문이란 무엇인가? - 반복문이란 (1) | 2022.01.30 |
---|---|
typedef를 이용한 자료형의 재정의 (0) | 2022.01.14 |
자료형 변환 - 자동형변환(산술연산자) part2 (0) | 2022.01.08 |
자료형 변환 - 자동형변환(산술연산자) part1 (0) | 2021.12.30 |
자료형이란 무엇인가 - 문자형 (0) | 2021.12.28 |
댓글