컴퓨터/C
프로그래밍에서 데이터를 메모리 공간에 저장하기 위해서는 메모리 공간에 맞는 자료형이 필요합니다.
이 자료형이 한번 선언된 자료형의 데이터를 다른 자료형으로 변환을 하거나 다른 자료형끼리 연산을 하기 위해서는 같은 자료형으로 바꾸어 주어야 메모리상에서 정상적인 연산이 가능합니다. 이렇게 데이터의 자료형을 바꿔주는 기법을 형 변환이라고 합니다. 이 형 변환에는 크게 2가지가 있습니다.
암시적 형 변환이란 자료형의 우선순위에 따라 데이터의 자료형이 자동적으로 바뀌는 형 변환을 말합니다.
이런 묵시적 형변환은 자동적으로 바뀌기 때문에 데이터의 손실이 이루어질 수 있어 가능한 사용을 할 시 주의해햐됩니다.
자료형의 암시적 형 변환의 우선순위는 다음과 같습니다.
위의 순서대로 자동적으로 자료형의 변환이 이루어지는 것을 암시적 형 변환이라고 합니다.
#include <stdio.h>
int main()
{
char a = 10;
int b = a;
printf("%d\n", b);
float c;
int d = 10;
int e = 5;
c= e / d;
printf("%f\n", c);
}
메모리에 정의된 데이터의 자료형은 다르지만 서로 계산이 됩니다.
하지만 int자료형 변수 d와 e를 나눈 값을 float자료형 변수 c에 넣었을 때 데이터의 손실이 생깁니다. 0.5가 아닌 0의 값이 나오는 것입니다. 실제 변수 c는 float자료형이지만 int자료형끼리 연산 환 결과는 0이기 때문입니다.
사용자가 원하는 시점에 형 변환을 하여 계산을 하기위해서는 사용자가 직접 형변환을 하겠다라고 문법적 명령을 해주어야 합니다. 이런 것을 명시적 형변환이라고 말하며 명시적 형변환을 하기위해 변수나 값앞에 괄호 ( ) 를 사용하여 변환할 자료형을 명시해 줌으로 형변환을 만들어 줍니다.
#include <stdio.h>
int main()
{
float c;
int d = 10;
int e = 5;
c= (float)e / (float)d;
printf("%f\n", c);
}
위의 소스코드처럼 int형 변수 d와 e를 계산을 할 시점에 이 변수를 float타입으로 형변환을 하겠다 라고 표현하여 형변환을 하면 변수 d와e를 float타입으로 계산하여 변수 c에 저장을 하기 때문에 원하는 정확한 값을 얻을 수 있습니다.
이런 식으로 명식적 형 변환을 이용하여 자료형이 다른 곳에서 연산을 하여 정확한 결과를 얻어 낼 수 있습니다.
C 언어 -포인터와 배열 (0) | 2021.06.21 |
---|---|
C 언어 - const 키워드 (0) | 2021.06.18 |
C 언어 - 오버플로우와 언더플로우 (0) | 2021.06.16 |
C 언어 - 다차원 배열 (0) | 2021.06.14 |
C 언어 - 포인터 / 포인터 변수 (0) | 2021.06.13 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet