본문 바로가기
프로그래밍/c언어 기초공부

[C언어 기초-13] 캐스트 연산자(cast operator)

by 졸린이 2024. 8. 3.
반응형

캐스트 연산자

  • 캐스트 연산자는 명시적인 형 변환이 필요할 때 사용하는 단항 연산자이다.
  • 캐스트 연산자는 원하는 데이터형을 소괄호로 묶어 피연산자 앞에 둠으로써 데이터 형을 변환하는 역할을 한다.
  • 수식의 형 변환을 위해 사용할 때는 캐스트 연산자를 소괄호로 묶지 않아도 된다.
  • 캐스트 연산자의 결합방향은 오른쪽에서 왼쪽이다.

예를 들어 5 / 2처럼 정수끼리의 나눗셈은 몫 2만 출력하는데 (float)로 형 변환을 하고 출력을 하면 2.5가 출력된다.

예시 코드를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
main() {
    float n1, n2, result;
 
    n1 = 14.5;
    n2 = 53.62;
 
    result = 5 / 2;
    printf("5 / 2 = %.2f\n", result);
 
    result = (float5 / 2;
    printf("(float) 5 / 2 = %.2f\n", result);
 
    result = n1 + n2;
    printf("%.2f + %.2f = %.2f\n", n1, n2, result);
 
    result = (int)n1 + (int)n2;
    printf("(int) %.2f + (int) %.2f = %.2f\n", n1, n2, result);
 
    result = (int)n1 + n2;
    printf("(int) %.2f + %.2f = %.2f\n", n1, n2, result);
 
    result =(int)(n1 + n2);
    printf("(int) (%.2f + %.2f) = %.2f\n", n1, n2, result);
}
cs

 

float 타입의 변수 n1, n2, result 세 개를 선언했다.

n1은 14.5, n2는 53.62로 초기화 했다.

 

9, 10행 : result는 float형식이지만 5와 2는 정수이며 정수끼리의 나눗셈은 몫만 계산한다. %.2f는 소수점 둘째 자리까지 출력한다는 의미이다. 그래서 결과값이 2.00이 나왔다.

 

12, 13행 : 위에 나온 5 / 2를 형변환을 하고 싶어 앞에 (float)를 작성했다. 그러면 정수끼리의 나눗셈이라도 소수점이 있는 값이면 flaot로 형변환을 해주었기 때문에 2.50이 출력된다.

 

15, 16행 : float 형식끼리의 덧셈이므로 소수점자리까지 잘 더해서 잘 출력해준다.

 

18, 19행 : n1, n2두 수를 int형으로 변환한 후 더해준다. 즉 뒤 소수점 자리를 버려서 14 + 53이 되어 67.00이 출력된다.

 

21, 22행 : n1만 int로 변환하여 14 + 53.62가 되어 67.62가 출력된다.

 

24, 25행 : n1, n2 두 수(초기 float 형식)를 그대로 더해 68.12가 되고 다시 int로 변환하여 68이 된다.

반응형

댓글