프로그래밍을 하다보면 종종 형변환(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 같은 표현인데
그것은 다음 포스팅에서 얘기한다.
끝.
'Programming > C & C++' 카테고리의 다른 글
[C/C++] 7강 - 상수, C언어에서 상수 사용하기 (1) (const,#define) (2) | 2021.06.20 |
---|---|
[C/C++] 6.1강 - C언어에서 형변환 하기(리터럴 접미사) (0) | 2021.06.16 |
[C/C++] 5.2강 - 시프트 연산자가 작동하는 방법 (0) | 2021.06.12 |
[C/C++] 5.1강 - C의 다양한 연산자(사칙대입연산자,증감연산자,sizeof,비트연산자) (0) | 2021.06.12 |
[C/C++] 5강 - C의 다양한 연산자(사칙연산자,관계연산자,논리연산자) (0) | 2021.06.09 |