📚자료형

기억 공간에 이름을 부여하는 것을 변수 선언이라고 한다. 변수 선언을 위해 C 언어에서는 자료형이라는 것을 제공한다. 자료형이란 사용하는 자료의 종류나 크기 등의 특징을 나타낸다.


📄자료형의 종류

  • 기본형
    • 정수형(int, short, long, unsigned)
    • 실수형(float, double, long double)
    • 문자형(char, unsigned char)
    • 열거형(enum)
    • 형 없음(void)


  • 확장형
    • 배열형(array type)
    • 함수형(function type)
    • 포인터형(pointer type)
    • 구조체형(structure type)



📄기본 자료형의 크기와 범위

  • 정수 자료형

    정수 자료형 범위 크기
    short
    (int) short
    (signed) short
    (signed) short (int)
    -32768 ~ 32767 2byte
    unsigned short
    unsigned short (int)
    0 ~ 65535 2byte
    int
    (signed) int
    -2,147,483,648 ~ 2,147,483,647 4byte
    unsigned
    unsigned int
    0 ~ 4,294,967,295 4byte
    long
    long (int)
    (signed) long
    (signed) long (int)
    -2,147,483,648 ~ 2,147,483,647 4byte
    unsigned long
    unsigned long (int)
    0 ~ 4,294,967,295 4byte
    long long
    long long (int)
    (signed) long long (int)
    -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 8byte
    unsigned long long
    unsigned long long (int)
    0 ~ 18446744073709551615 8byte



  • 실수 자료형

    실수형 범위 크기
    float 3.4 X 10-38 ~ 3.4 X 1038 4byte
    double 1.7 X 10-308 ~ 1.7 X 10308 8byte
    long double 1.7 X 10-308 ~ 1.7 X 10308 8byte



  • 문자형
    C 언어에서 문자형은 ASCII 코드를 사용하여 처리한다.

    문자형 범위 크기
    char -128 ~ 127 1byte
    unsigned char 0 ~ 255 1byte



  • 8진수, 16진수의 지정

    진수 지정 방법
    8진수 숫자 앞에 0 int octal_value = 011
    16진수 숫자 앞에 0x int hex_value = 0x1A



  • 열거형

    형식 : enum 태그명 {열거자 1, 열자 2, … }


선언 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 디폴트로 첫 번째 열거자(SUN)의 값은 0이다.
enum day {SUN, MON, TUE, WED, THU, FRI, SAT};

// enum day형인 변수 d1과 d2를 만들었다.
enum day d1, d2;

// 초기값을 지정해주면 다음 열거자는 초기값 +1
enum day2
{
  SUN = 1,
  MON,      // 2
  TUE,      // 3
  WED,
  THU,
  FRI,
  SAT
} d1, d2;




📚변수 선언

모든 변수는 어떤 형태의 자료를 저장할 것인지 미리 결정하여 사용하기 전에 정의해야 한다. 변수 선언은 변수명과 변수의 자료형을 지정하여 변수를 위한 기억공간을 할당하는 것이다.


📄변수에 저장될 값의 크기

변수를 선언할 때는 저장하게될 자료의 범위를 고려하여 자료형을 지정해야 한다. 변수가 가지는 범위를 넘어서거나 너무 작은 값을 대입하면 오버플로 또는 언더플로가 발생하여 원치 않는 결과가 나올 수 있다.


📄변수의 선언 위치

변수는 함수의 외부와 내부에 선언할 수 있다. 함수 외부에서 선언된 변수를 전역변수라고 하며 프로그램 어디에서나 사용할 수 있다.

함수 내부에서 선언된 변수는 지역변수라고 하며 함수 내부에서만 사용할 수 있다.

전역변수는 프로그램이 종료되기 전까지 기억공간에 존재하게 되고, 지역변수는 함수가 호출될 때 생성되어 함수의 실행이 종료되면 기억공간에서 소멸된다.

전역변수는 프로그램이 실행되는 동안 항상 존재하는 자료 영역에 저장되고, 지역 변수는 임시 기억공간인 스택 영역에 저장된다.

전연변수는 0으로 자동 초기화되지만 지역변수는 자동 초기화되지 않는다.


📄변수의 초기화

모든 변수는 선언이 이루어지면 변수에 특정 값을 부여해야 한다. 이것을 변수의 초기화라고 하는데 C 언어에서 변수를 초기화하지 않으면 에러가 발생할 수 있다. 초기화하지 않은 변수에는 기억공간에 존재하고 있던 기존의 값(쓰레기값)이 남아있을 수 있기 때문이다.

1
2
3
4
5
6
7
#include <stdio.h>

void main()
{
  int i;        // 변수 i 선언
  int j = 1;    // 변수 j를 1로 초기화
}



Leave a comment