본문 바로가기

C-Language/Type Casting

Type Casting in C language

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