' [C/C++] 6강 - C언어에서 형변환 하기 (형변환 연산자)

Programming/C & C++

[C/C++] 6강 - C언어에서 형변환 하기 (형변환 연산자)

mdisprgm 2021. 6. 16. 00:44
728x90

프로그래밍을 하다보면 종종 형변환(type casting)이란 것이 필요하다

 

형변환이란, 말그대로 자료형끼리 서로 변환한다는 것인데

 

어떤 경우에 그것이 필요한지 아래 코드를 살펴보자.

#include <stdio.h>

int main() {
    int a = 10;
    int b = 25;

    printf("%d / %d = %d\n", a, b, b / a);
}

이 코드를 실행했을 때 출력되는 결과를 추측해볼 때

 

10 / 25 = 2.5 라 생각하실 수 있지만 아니다.

 

 

보다시피 2로 출력이 됐는데 그 이유는

 

a, b가 모두 정수이기 때문이다.

 

정수 / 정수는 결과가 무조건 정수로 나오게 된다.

 

그러니까, 25 / 10에서 2가 나온 것처럼 그 '몫'만 나온다는 뜻이다.

 

따라서 저것을 2.5로 출력되게 하려면 a나 b 둘 중 하나를 float으로 형변환 해주면 된다.

 

그 방법은 아래와 같다.

int a = 10;
int b = 25;

float result;

result = (float)b / a; //float 타입으로 형변환 하는 연산자는 (float), int는 (int)
//또는 b / (float)a

이렇게 특정 자료형으로 형변환 해줄 때는 형변환 연산자를 이용하는데

 

자료형 이름에 괄호를 씌워주면 그것이 해당 자료형에 대한 형변환 연산자가 된다.

실행해보면

 

이렇게 2.5로 출력이 된 걸 확인할 수 있다.

 

(float)b == 25.0f 이기 때문에

 

25.0f / 10 = 2.5f 가 된 것이다.

 

물론 이와 반대로

 

float to int 형태의 형변환도 가능하다.

 

 

float -> int 변환에서는 소수점이 모두 버려지게 된다.

 

이외에 (char), (long long), (unsigned int) 등등 많은 자료형들을 

 

상황에 맞게 변환하여 쓸 수 있다.

 

 

지금까지는 변수에 대한 형변환이었는데

 

가장 마지막 사진처럼 3.141592 같은 숫자 자체(리터럴 상수)를 변환할 때는 더 편리하게 변환할 수 있다.

 

힌트를 주자면 바로 위에서 말한

 

25.f, 2.5f 같은 표현인데

 

그것은 다음 포스팅에서 얘기한다.

 

 

끝.

728x90

'