[C언어] 데이터형 바꾸기 캐스트 연산자
이번 포스팅은 데이터형을 바꾸는 캐스트 연산자에 대해 소개하겠습니다.
문장과 수식은 보통 한 가지 데이터형의 변수와 사용해야 하지만 데이터형을 혼합하여 사용하여도 프로그램 자체가 죽지는 않습니다.
이러한 데이터형 변환에는 몇가지 규칙이 있는데요.
1. char형과 short의 연산의 경우 자동으로 int형으로 변환됩니다.
#include <stdio.h>
int main (void)
{
char a = 10;
short b = 20;
printf("%zd\n",sizeof(a));
printf("%zd\n",sizeof(b));
printf("%zd\n",sizeof(a+b));
}
|
1바이트인 char 형과 2바이트인 short형의 덧셈의 경우 4바이트인 int형으로 바뀜을 확인할 수 있습니다.
2. 두 가지 데이터형이 사용된 연산에서, 두 값은 두 가지 데이터형 중 더 높은 등급으로 변환됩니다. 그 순서는 long double, double, float, unsigned long long, long long, unsigned long , long, unsigned int, int 순입니다.
3. 대입문에서 최종 계산 결과는 그 값이 대입될 변수의 데이터 형으로 변환된다.
4. 함수의 전달 인자로 전달될 때, char 형과 short 형은 int 형으로, float 형은 double 형으로 변환된다. 단 함수 프로토타입에 의해 무시될 수 있다.
캐스트 연산자
위의 규칙에 따라 자동으로 데이터 타입이 변환되었으나 캐스트 연산자를 이용해 사용자가 원하는 데이터형으로 변환할 수 있습니다.
사용방법은 (data type)을 원하는 데이터형으로 대체하여 사용합니다.
예를 들어 1.14와 3.14를 정수형(int)으로 바꾸고 싶다면 (int) 1.14, (int) 3.14를 사용하면 됩니다.
#include <stdio.h>
int main (void)
{
float sum;
sum = (int)1.14 + (int)3.14;
printf("%f\n",sum);
//4.000000
sum = 1.14 + 3.14;
printf("%f\n",sum);
//4.28000
printf("%d\n",(int)sum);
//4
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
위 코드를 보시면 float형 sum에 (int)로 변환된 1.14와 3.14가 더해져 4.0이 출력되었습니다.
다음은 캐스팅 연산자를 사용하지 않아 나온 4.28을 갖고 있는 sum에 (int) sum으로 캐스팅을 하게 되면 정수형으로 4가 출력되는 것을
확인하실 수 있습니다.
'ET의 공부 > C언어' 카테고리의 다른 글
[C언어] 반복문 for문 루프, for문 콤마(,)연산 (0) | 2019.12.10 |
---|---|
[C언어] 대입연산자 +=, -=, *= , /=, %= (0) | 2019.12.04 |
[C언어] 증가연산자 ++ 와 감소 연산자 -- , 증감연산자 사용방법 (0) | 2019.12.03 |
[C언어] 산술연산자(+,-,*,/,%) 우선순위와 결합 방향 (0) | 2019.11.27 |
C언어 수식함수 라이브러리 math.h (0) | 2019.11.27 |