반응형
반응형

C 언어 프로그램밍 2번째 시간에는 자료형에대해서 알아보겠습니다.

컴퓨터는 메모리라는 공간을 사용해서 정보를 저장합니다.

이런 메모리 공간을 우리는 0,1로 구분할 수 있는 한개의 박스라고 생각할 수 있습니다.

즉 한개 박스안에 0 또는 1만 존재할 수 있는 겁니다.

이런 박스가 컴퓨터 내부에 엄청나게 많이 존재하는 겁니다.

이런 박스가 천개 있으면 킬로바이트(kliobytes)라고 합니다.

킬로바이트가 1024개 있으면 메가바이트(megabytes)라고 합니다.

다시 메가바이트가 1024개 있으면 기가바이트(gigabytes)라고 합니다.

우리가 모두 알고 있는 테라바이트(terabytes)는 기가바이트가 1024개 있어야 합니다.

 

이처럼 프로그래밍은 이러한 메모리를 사용해서 컴파일하고 EXE 실행파일을 생성합니다.

위표는 8bit 메모리를 사용하는 byte 메모리 표입니다.

1비트 기준을 0,1로 사용여부를 결정하고 1bit마다 2의승수가 적용되어 계산됩니다.

C언어는 이러한 바이트 집합을 자료형이라고 합니다.

이 자료형은 요즘같은 메모리가 많은 시대에서는 중요하지는 않지만 코드 상에서 정확한 계산을 하기 위해서는 반드시 필요한 내용입니다.

그럼 이런 자료형은 어떻게 C언어에서 사용하지 알아 보겠습니다.

#include <stdio.h>

int main(void)
{
	int 시급 = 1000;
	int 일한시간 = 7;
	int 월급 = 시급 * 일한시간;
	printf(" 오늘 월급은 %d 입니다. \n", 월급);
	printf("\n");
	return 0;
}

이해하기 쉽도록 변수를 한글을 사용했습니다.

변수를 한글로 사용해도 컴파일에는 아무 상관없습니다.

이유는 위에서 말씀드린것 처럼 컴퓨터는 박스에 0 , 1만 확인하기 때문에 문법만 맞다면은 문제가 안됩니다.

위내용 처럼 int 자료형을 선언하고 뒤에 문자열을 입력하면 4바이트를 사용하는 문자열로 인식하는 겁니다.

생성된 문자열 "시급"에 = 부호를 사용해서 1000 이라는 값을 입력했습니다.

int 자료형은 -2147489648 ~ 2147489647까지 포함하기 때문에 사용하는데 아무 문제가 없습니다.

그럼 C언어 프로그램은 "시급" 변수 bit트 배열을 1000으로 변경합니다.

"일한시간"도 동일하게 할당 됩니다.

단 한글로 사용할 경우는 영문과 동일하게 스페이스(간격)이 들어가면 안됩니다.

 

 

 

이렇게 입력된 내용은 "%d"를 사용해서 printf에서 출력할 수 있습니다.

출력 내용은 "시급"  *  "일한시간"이니까 7000을 확인 할 수 있습니다.

자료형은 다양하게 선언해서 사용이 가능합니다.

#include <stdio.h>

int main(void)
{
	int 인트 = 1000;
	char 문자열 = 'a';
	float 소수점 = 1.2;
	printf(" 인트 4바이트 = %d \n", 인트);
	printf("\n");
	printf(" 문자열 1바이트 = %c \n", 문자열);
	printf("\n");
	printf(" 소수점 4바이트 = %f \n", 소수점);
	printf("\n");
	return 0;
}

각 자료형에 입력 내용을 넣고 printf() 함수를 사용해서 출력했습니다.

printf() 함수는 ""가 끝나는 지점에 %d를 사용한 개수 만큼 ','를 사용해서 변수를 정의할 수 있습니다.

컴파일 출력 결과는 다음과 같습니다.

설정한 자료형에 따라서 출력 내용이 상이합니다.

자료형 범위안에 포함만 된다면 모든 자료형을 조합할 수 있습니다.

하지만 기본적으로 프로그래밍을 할 때는 가독성과 메모리를 유연하게 사용하기 위해서 같은 자료형 끼리 사용합니다.

즉 int, float는 같은 4바이트 정수와 소수점을 구분해서 사용하는 것이 좋은 방법입니다.

#include <stdio.h>

int main(void)
{
	int 인트 = 1.2;
	char 문자열 = 'a';
	float 소수점 = 1000;
	printf(" 인트 4바이트 = %d \n", 인트);
	printf("\n");
	printf(" 문자열 1바이트 = %c \n", 문자열);
	printf("\n");
	printf(" 소수점 4바이트 = %f \n", 소수점);
	printf("\n");
	return 0;
}

위 코드는 "인트", "소수점"을 반대로 사용했습니다.

그럼 출력은 어떻게 될까요

이 처럼 원하는 값을 얻지 못했습니다.

"인트"에 소수점을 넣으면 인트형태로 인식하기 때문에 소수점을 확인할 수 없습니다.

 

 

 

자료형은 +, -, *, /, %를 사용해서 연산할 수 있습니다.

출력에 사용하는 필수 스트링은 아래와 같습니다.

정확한 자료형 크기는 limits.h에 정의되어 있습니다.

limits.h에 자료형 크기가 #define 되어 있습니다.

 

#include <stdio.h>
#include <limits.h>

int main(void)
{
	printf("char 자료형 크기는 = %d to %d\n", CHAR_MIN, CHAR_MAX);
	printf("\n");
	printf("unsigned char 자료형 크기는 = 0 to %u\n", UCHAR_MAX);
	printf("\n");
	printf("short 자료형 크기는 = %d to %d\n", SHRT_MIN, SHRT_MAX);
	printf("\n");
	printf("unsigned short 자료형 크기는 = 0 to %u\n", USHRT_MAX);
	printf("\n");
	printf("int  자료형 크기는 = %d to %d\n", INT_MIN, INT_MAX);
	printf("\n");
	printf("unsigned int 자료형 크기는 = 0 to %u\n", UINT_MAX);
	printf("\n");
	printf("long 자료형 크기는 = %ld to %ld\n", LONG_MIN, LONG_MAX);
	printf("\n");
	printf("unsigned long 자료형 크기는 = 0 to %lu\n", ULONG_MAX);
	printf("\n");
	printf("long long 자료형 크기는 = %lld to %lld\n", LLONG_MIN, LLONG_MAX);
	printf("\n");
	printf("unsigned long long 자료형 크기는 = 0 to %llu\n", ULLONG_MAX);
	printf("\n");
	printf("double  자료형 크기는 =  %u \n", DBL_DIG);
	printf("\n");
	printf("long double  자료형 크기는 =%u \n",	LDBL_DIG);
	printf("\n");
	return 0;
}

Printf() 함수를 사용해서 자료형 크기를 출력하겠습니다.

마지막으로 sizeof() 함수를 사용해서 자료형이 차지하는 byte 크기를 알아보겠습니다.

#include <stdio.h>
#include <limits.h>

int main(void)
{
	printf("char 크기= %u bytes\n", sizeof(char));
	printf("\n");
	printf("short 크기= %u bytes\n", sizeof(short));
	printf("\n");
	printf("int 크기= %u bytes\n", sizeof(int));
	printf("\n");
	printf("long 크기= %u bytes\n", sizeof(long));
	printf("\n");
	printf("long long 크기= %u bytes\n", sizeof(long long));
	printf("\n");
	printf("float 크기= %u bytes\n", sizeof(float));
	printf("\n");
	printf("double 크기= %u bytes\n", sizeof(double));
	printf("\n");
	printf("long double 크기= %u bytes\n", sizeof(long double));
	printf("\n");
	return 0;
}

sizeof() 함수는 자료형 크기를 확인할 수 있습니다.

출력 결과 각 자료형이 차지하는 byte크기를 확인할 수 있습니다.

sizeof()는 통신과 같은 사이즈를 확인해야하는 코드에 많이 사용합니다.

오늘은 C언어 프로그래밍 자료형에 대해서 알아봤습니다.

이번 내용을 확인하고 다양한 연산 프로그램을 공부해보세요.

감사합니다.

반응형

+ Recent posts