EXCELSIOR

[C] Chap02 - 자료형(Data Type) 본문

C&C++/C - Programming

[C] Chap02 - 자료형(Data Type)

Excelsior-JH 2018. 4. 25. 09:46

Chap02 - 자료형 (Data Type)

C 언어의 자료형(data type)은 일정 크기(길이)의 메모리에 저장된 정보(자료)를 해석하는 방법이라 할 수 있다.

자료(data)란 수(number)을 의미한다. 그 이유는 컴퓨터가 처리할 수 있는 정보는 오직 숫자 뿐이기 때문이다. 자료형은 의미 그대로 형식을 의미하며, 서로 약속된 구조로써 다양한 형식이 존재한다.

2.1 변수와 상수

상수

상수값이 확정되어 앞으로 변할 가능성이 없는 수를 말하며, C 언어에서 상수의 종류는 다음과 같다.

  • 리터럴 상수

    • 문자 상수 : ex. 'A'

    • 문자열 상수 : ex. "Hello, World"

    • 정수 상수 : ex. 3, 4L

    • 실수 상수 : ex. 3.4F, 123.45

  • 심볼릭 상수

    • 형한정: const형한정어를 이용하여 선언 및 정의되는 상수 → 값이 변할 수 없는 변수이며, 이름을 가진 상수 (ex. const int nMax = 100;)

    • 전처리기: #define 전처리기로 선언 및 정의되는 상수.

변수

변수구체화하지 않았거나 앞으로 변경될 가능성이 있는 수 를 말한다.

  • 변수는 이름으로 식별한다.

  • 변수는 그릇이고 상수는 그릇에 담을 값이다.

  • 변수의 개수는 적을 수록 좋다. → 많을 수록 프로그램이 복잡해짐

  • 변수는 메모리로 구현되며, 메모리는 주소를 가진다.


2.1.1 C 언어의 자료형

분류자료형
정수형

char : 1(8비트) short: 2(16비트) int: 4(32비트) long: 4(32비트) long long int: 8(64비트)

실수형

float: 4 double: 8 long double : 8 이상

유도형* : 4(32비트 App), 포인터. 메모리의 주소를 의미 [] : 배열, 동일 요소의 집합체 구조체 : 서로 다른 요소들의 집합체 공용체 : 동일 메모리에 다양한 해석방법을 부여하는 방법
-void : 무치형, 길이 및 해석방법이 없는 자료형


2.1.2 부호비트와 자료비트 그리고 표현범위

8비트는 1바이트로 표시되며, C 언어의 자료형에서 부호가 있는 정수형의 경우, 가장 왼쪽 1 비트를 부호비트(sign bit)로 사용한다.

부호비트|------------------자료비트----------------|
1bit1bit1bit1bit1bit1bit1bit1bit

2진수 한자리수로 표현할 수 있는 숫자는 0, 1 두가지이므로 이다. 따라서, 7비트로 표현할 수 있는 수는 (부호비트가 0인 경우)이다. 부호비트가 1이면 음수가 되고, 위의 8비트 정수형의 표현 범위는 즉. 까지 이다.

크기자료형표현범위
8비트char
unsigned char
16비트short
unsigned short
32비트int
unsigned int
long
unsigned long


2.2 정수 자료형과 변수, 상수

변수는 사용에 앞서 반드시 선언(declaration)을 해줘야 한다. 변수는 이름, 주소(메모리) 값(자료) 3가지 값을 가진다.

  int nData = 10;  // -> 선언 및 정의


2.2.1 char와 ASCII 코드

컴퓨터는 오직 숫자만 표현할 수 있으며, 글자(문자)를 표현할 수 없다. 그래서 나온 대안은 특정 숫자를 문자로 규정하는 것인데 이를 부호체계라 한다. 이 부호체계를 ASCII(American Standard Code for Information Interchange)라 한다.

ASCII 코드는 비트로 문자를 표현하는 코드체계였으나 여기에 확장 비트를 하나 더해 보통 비트로 표현된다. 영문 한 글자를 저장할 수 있는 메모리의 크기(1byte)가 8비트 이다. 문자를 표현하는 형식인 char형은 부호가 있는 비트(byte) 정수형이다.

  
char ch = 'A';


2.3 실수 자료형

실수 자료형은 소수점 이하의 숫자 정보까지 표현할 수 있는 자료형을 말한다. 다른 말로 부동 소수점표현이라고도 하는데, 부동 소수점은 100.0이라는 실수를 10.0 x 10 또는 1.0 x 100 표현할 수 있으며, 이렇게 소수점의 위치가 다른 자리로 변경될 수 있음을 의미한다.

컴퓨터는 실수를 명확하게 표현할 수 없다. 두 정수 사이에 있는 실수의 수를 확실하게 말할 수 없기 때문이다. 그렇기 때문에 컴퓨터가 실수를 표현하는 방법은 일정 수준의 오류(부동 소수점 오차)를 전제로 한다.

컴퓨터의 실수 표현이 부정확한 이유는 무수히 많은 소수점 이하 숫자 표현이 불가능하므로 일정 수준까지만 표현하기로 확정하고 그보다 더 정밀한 숫자는 범위상 가까운 숫자로 인식한다.

크기자료형표현범위
32 비트float~
64 비트double ~
79 비트long doubledouble 이상


2.4 문자와 문자(배)열

문자열을 정확하게 표현하면 문자의 배열 즉, 여러 문자 인스턴스가 모인 집합체라고 한다. 문자열은 그 자체가 배열(array)임에도 불구하고 다른 자료형 처럼 인스턴스가 한개라고 착각하는 경우가 많다.

배열한 개의 인스턴스가 아니라 여러 인스턴스가 모여 한 덩어리를 이룬 집합체라는 것과 개별 인스턴스에 부여된 이름이 아니라 주소에 이름을 부여한다.

  #include <stdio.h>

int main(void)
{
   char c1 = 'A', ch2 = 'B', ch3 = 'C';
   char szData[4] = {'A', 'B', 'C'};
   char szNewData[4] = {"ABC"};
   printf("%s\n", szData);
   printf("%s\n", szNewData);
   // Array에 명시된 값이 없으면 0으로 초기화
   printf("%d", szData[3]);
   return 0;    
}


위의 코드에서 char szData[4]char 인스턴스 네 개를 의미한다.

szName[0]szName[1]szName[2]szName[3]
'A''B''C''\0'

szName[3]에는 별다른 명시가 없었으므로 0으로 초기화된다.


2.5 이름과 주석문

모든 언어의 프로그램 코드는 그 자체로 하나의 문서이다. 따라서 코드를 읽기 좋은 코드를 작성하는 것이 좋다.

변수의 이름은 이름에서 목적이 드러나는 것이 좋다. 예를 들어 최종 연산결과가 저장되는 변수의 이름을 nResult 라고 할 수 있다.

주석문은 코드 내에서 메모를 남길 수 있는 문법이다. C 언어에서의 주석문은 다음과 같다.

  • //: 한 행을 주석 처리

  • /* */: 특정 구간(여러 행 가능) 주석 처리




Comments