C 언어에서 데이터의 형변환
명시적 형변환 ( Explicit Type Casting )
int n = 100;
double d = (double) n; // int --> double 명시적 형변환
위의 코드에서 사용된 (double) 부분에서 괄호는 형변환 연산자이다. 괄호 안에 자료형이 있는 경우에는 형변환 연산자이다
묵시적 형변환 ( Implicit Type Casting )
char ch = 100;
int n = ch; char --> int 묵시적 형변환
형변환 테스트 코드
#include <stdio.h> int main() { // 정수 리터럴은 묵시적으로 4바이트 int 형임 printf("정수 [100]의 메모리 사이즈:%d \n", sizeof(100)); char ch = 100; // int -> char 묵시적 형변환 printf("int->char 묵시적 형변환 결과, ch = %d \n", ch); ch = (char)100; printf("int->char 명시적 형변환 결과, ch = %d \n", ch); ch = 128; // 1바이트가 넘는 숫자를 1바이트 공간에 저장하면.....? printf("ch=128; ch=%d \n", ch); // ch=-128 printf("char형 변수의 메모리 사이즈: %d \n", sizeof(ch)); // 1 int n = ch; // ch -> int 묵시적 형변환 printf("ch->n 묵시적 형변환 결과, n=%d \n", n); n = (int)ch; // ch -> int 명시적 형변환 printf("ch->n 명시적 형변환 결과, n=%d \n", n); double d = 3 / 2; printf("정수형의 나눗셈 결과 d = %f \n", d); // 1.0000 printf("실수(double)형 리터럴의 메모리 사이즈:%d \n", sizeof(2.0)); // 8 d = 3 / 2.0; printf("실수형의 나눗셈 결과 d = %f \n", d); // 1.5000 d = 3 / (double)2; printf("실수형으로 형변환한 후의 나눗셈 결과 d = %f \n", d); // 1.5000 return 0; }
위의 코드를 실행했을 때의 출력화면
정수 [100]의 메모리 사이즈:4
int->char 묵시적 형변환 결과, ch = 100
int->char 명시적 형변환 결과, ch = 100
ch=128; ch=-128
char형 변수의 메모리 사이즈: 1
ch->n 묵시적 형변환 결과, n=-128
ch->n 명시적 형변환 결과, n=-128
정수형의 나눗셈 결과 d = 1.000000
실수(double)형 리터럴의 메모리 사이즈:8
실수형의 나눗셈 결과 d = 1.500000
실수형으로 형변환한 후의 나눗셈 결과 d = 1.500000