정처기 감자정처기 감자
C언어기초

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

C언어 형변환 (Casting)

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

요약

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

형변환이란?

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

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

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

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

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

c
코드 하이라이팅 중…

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

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

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

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

c
코드 하이라이팅 중…

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


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

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

c
코드 하이라이팅 중…

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

원본 값(int) 결과
3.73
3.23
-3.7-3
-3.2-3
(int) 변환은 0 방향으로 절단합니다
소수점 아래를 무조건 버립니다. 양수든 음수든 0에 가까워지는 방향으로 잘라냅니다.

정수 나눗셈 vs 실수 나눗셈

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

c
코드 하이라이팅 중…

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

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

c
코드 하이라이팅 중…
평균 계산은 한쪽을 double로 형변환하세요
int끼리 나누면 소수점이 사라져 평균이 왜곡됩니다. 분자나 분모 중 하나만 (double)로 명시적 형변환하면 실수 나눗셈이 됩니다. 26년 1회 실기에서 double 평균을 요구하는 문제가 출제된 바 있습니다.

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


기초 문제

문제를 불러오는 중이에요.

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

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.

Footnotes

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


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
후수학습(1개)
  • C언어 출력 함수 - putchar, printf, puts

관련 글

(41개)
제목태그업데이트시험
C언어 연결 리스트 뒤집기 (Reverse Linked List)
C언어코딩C언어
2026-05-06-
C언어 사용자 정의 함수 기초
C언어코딩C언어
2026-05-06-
C언어 sizeof 연산자
C언어코딩C언어
2026-05-06-
C언어41개
제목태그업데이트시험
C언어 연결 리스트 뒤집기 (Reverse Linked List)
C언어코딩C언어
2026-05-06-
C언어 사용자 정의 함수 기초
C언어코딩C언어
2026-05-06-
C언어 sizeof 연산자
C언어코딩C언어
2026-05-06-
C언어 이진 트리 (Binary Tree)
C언어코딩C언어
2026-04-24-
C언어 중첩 구조체와 포인터 접근
C언어코딩C언어
2026-04-24-
C언어 함수 포인터 (Function Pointer)
C언어코딩C언어
2026-04-24-
배열 C언어 코딩 감자시험
감자시험C언어배열감자시험
2026-03-28응시
C언어 왕감자 정보처리기사 실기 모의 시험
C언어C언어
2026-03-27응시
제어문/반복문 C언어 코딩 감자시험
감자시험C언어제어문반복문
2026-03-28응시
연산자 C언어 코딩 감자시험
감자시험C언어연산자감자시험
2026-03-28응시
포인터 C언어 코딩 감자시험
감자시험C언어포인터감자시험
2026-03-28응시
문자열 C언어 코딩 감자시험
감자시험C언어문자열감자시험
2026-03-28응시
구조체 C언어 코딩 감자시험
감자시험C언어구조체감자시험
2026-03-28응시
C언어 구조체 배열
C언어코딩C언어
2026-03-21-
C언어 구조체 포인터
C언어코딩C언어
2026-04-24-
C언어 함수 프로토타입
C언어코딩C언어
2026-03-21-
C언어 입력 함수 - scanf, getchar, gets
C언어코딩C언어
2026-03-21-
C언어 출력 함수 - putchar, printf, puts
C언어코딩C언어
2026-09-29-
C언어 문자열 포인터 (char *)
C언어코딩C언어
2026-03-21-
C언어 포인터 산술 (Pointer Arithmetic)
C언어코딩C언어
2026-03-21-
C언어 재귀함수 (Recursion)
C언어코딩C언어
2026-03-21-
C언어 선택정렬 (Selection Sort)
C언어코딩C언어
2026-02-10-
C언어 스택 (Stack) - LIFO 자료구조
C언어코딩C언어
2026-03-21-
C언어 2차원 배열
C언어코딩C언어
2026-03-21-
C언어 원형 큐 (Circular Queue)
C언어코딩C언어
2026-03-21-
C언어 ctype.h 문자 판별 함수
C언어코딩C언어
2026-03-21-
C언어 자료형
C언어코딩C언어
2026-05-15-
C언어 이중 포인터 (Double Pointer)
C언어코딩C언어
2026-03-21-
C언어 동적 메모리 할당 (malloc, free)
C언어코딩C언어
2026-05-04-
C언어 헤더 파일과 #include
C언어코딩C언어
2026-03-21-
C언어 연결 리스트 (Linked List)
C언어코딩C언어
2026-05-06-
C언어 포인터 배열과 2차원 배열
C언어코딩C언어
2026-03-24-
C언어 포인터의 기초
C언어코딩C언어
2026-06-25-
C언어 큐 (Queue) - FIFO 자료구조
C언어코딩C언어
2026-03-21-
C언어 static 변수 - 값이 유지되는 변수
C언어코딩C언어
2026-03-21-
C언어 포인터를 이용한 문자열 복사
C언어코딩C언어
2026-07-09-
C언어 문자열 뒤집기 (포인터 활용)
C언어코딩C언어
2026-03-21-
C언어 구조체
C언어코딩C언어
2026-03-20-
C언어 삼항 연산자
C언어코딩C언어
2026-03-21-
C언어 typedef - 자료형에 새 이름 붙이기
C언어코딩C언어
2026-03-21-
전설의 완전수 문제 - C언어
C언어코딩C언어
2025-09-12-
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999