C언어 형변환 (Casting)

코딩C언어
읽는데 5분 소요
처음 쓰여진 날: 2026-05-15
마지막 수정일: 2026-05-15
조회수:
선수학습(1개)

요약

C언어의 형변환을 정리합니다. 묵시적 형변환(자동 승격), 명시적 형변환((int)3.7 절단), 정수 나눗셈 vs 실수 나눗셈, 평균 계산 함정까지 정보처리기사 실기 대비 핵심 내용을 다룹니다.

형변환이란? 기초

형변환(Type Casting)은 한 자료형의 값을 다른 자료형으로 바꾸는 것입니다. 서로 다른 자료형끼리 연산하거나 소수점 자릿수를 더 정확하게 표현해야 할 때 사용합니다.

형변환에는 두 가지가 있습니다.

  • 묵시적 형변환 (implicit, 자동으로) — 컴파일러가 자동으로 바꿉니다.
  • 명시적 형변환 (explicit, 직접 써서) — (자료형) 문법으로 개발자가 직접 바꿉니다.

묵시적 형변환 — 컴파일러가 자동 기초

서로 다른 자료형끼리 연산하면, 표현 가능한 범위가 더 넓거나 소수까지 표현할 수 있는 자료형으로 자동 승격됩니다. 예를 들어 정수만 담는 int보다 소수까지 담는 double이 더 넓습니다. 자동 승격이란 더 넓은 자료형으로 자동 변환되는 것을 뜻합니다.

c
코드 하이라이팅 중...

승격 우선순위: intlongfloatdouble (오른쪽으로 갈수록 표현 범위 또는 정밀도가 더 넓음)

두 피연산자 중 더 오른쪽에 있는 자료형으로 변환됩니다. charshort는 연산 전에 먼저 int로 승격된 후 위 순서를 따릅니다. 직관과 다를 수 있는 점은 longfloat보다 왼쪽에 있다는 것인데, long은 정수 범위가 크지만 소수를 표현하지 못하므로 소수까지 다루는 float이 더 오른쪽입니다.

c
코드 하이라이팅 중...
자료형 자동 승격 우선순위 흐름 — char/short는 int를 거쳐 합류 후 int → long → float → double 순서로 승격
자료형 승격 우선순위 — char/short는 int를 거쳐 합류

L 접미사는 해당 정수를 long 타입으로, f 접미사는 해당 실수를 float 타입으로 지정합니다.

c
코드 하이라이팅 중...

이때 수학적 값(크기)은 변하지 않습니다. int 5와 double 5.0은 같은 수이지만, 메모리에 저장되는 형식이 바뀌는 것입니다.


명시적 형변환 — 개발자가 직접 기초

(자료형) 문법으로 개발자가 직접 변환합니다.

c
코드 하이라이팅 중...

doubleint 변환은 반올림이 아니라 절단1입니다. 절단이란 소수점 아래를 버리는 것으로, 양수 3.7도 3, 음수 -3.7도 -3이 됩니다. 두 경우 모두 0에 가까워지는 방향으로 잘립니다. (int)3.7은 4가 아니라 3입니다.

원본 값(int) 결과
3.73
3.23
-3.7-3
-3.2-3

정수 나눗셈 vs 실수 나눗셈 심화

C언어에서 / 연산은 양쪽 피연산자가 모두 정수이면 정수 나눗셈이 됩니다. 결과의 소수점 이하는 버려집니다.

c
코드 하이라이팅 중...

r2가 2.5가 아닌 이유: 대입 연산자 =는 오른쪽 식을 먼저 다 계산한 뒤 그 결과를 왼쪽에 넣습니다. a / b두 피연산자 모두 int 이므로 승격 규칙이 발동하지 않고, 정수 나눗셈으로 2가 먼저 계산됩니다. 이 결과 2가 왼쪽 double에 대입되어 2.0이 됩니다. =의 왼쪽 타입(double)은 오른쪽 계산 결과에 영향을 주지 않고, 이미 버려진 소수는 돌아오지 않습니다.

평균을 구할 때 주로 이 함정에 빠집니다.

c
코드 하이라이팅 중...

형변환의 결과를 화면에 어떤 모양으로 출력할지는 출력 함수 — 서식별 출력 비교에서 확인할 수 있습니다.


기초 문제

정보처리기사 실기 대비 문제


Footnotes

  1. 영어로 truncation. 소수점 이하를 무조건 버려 0 방향으로 이동시키는 방식입니다.


관련 글

(41개)
제목태그시험
C언어 연결 리스트 뒤집기 (Reverse Linked List)
C언어
-
C언어 사용자 정의 함수 기초
C언어
-
C언어 sizeof 연산자
C언어
-
C언어 형변환 (Casting) | 정처기 감자