다유데브 2022. 11. 11. 13:48
반응형

1) 목표

  • 기본적인 변수의 종류 알아보기
  • 변수와 메모리의 관계 이해하기

2) 예제 프로그램 작성

  • vi var.c 작성
// 사용할 헤더파일
#include <stdio.h>
#include <limits.h>
#include <float.h>

// 프로그램시작. 반드시 1개의 main()함수가 있어야함.
int main() {
    // 변수선언
    char cVal;          // 문자형
    short sVal;         // 정수
    int nVal;           // 정수
    float fVal;         // 부동소수점
    long lVal;          // 정수
    double dVal;        // 부동소수점

    // 변수에 값을 저장
    cVal = 'A';         // 문자형
    sVal = 123;         // 정수
    nVal = 4567;        // 정수
    fVal = 456.98;      // 실수
    lVal = 12345678;    // 정수
    dVal = 123456.98;   // 실수

    // 각변수가 차지하는 메모리크기를 확인한다.
    printf("char   크기:[%ld] byte  : 범위:[%d ~ %d] : 값:[%c]\n", sizeof(char), CHAR_MIN, CHAR_MAX, cVal);
    printf("short  크기:[%ld] byte  : 범위:[%d ~ %d] :값:[%d]\n", sizeof(short), SHRT_MIN, SHRT_MAX, sVal);
    printf("int    크기:[%ld] bytes : 범위:[%d ~ %d] :값:[%d]\n", sizeof(int), INT_MIN, INT_MAX, nVal);
    printf("float  크기:[%ld] bytes : 범위:[%.3e ~ %.3e] :값:[%f]\n", sizeof(float), FLT_MIN, FLT_MAX, fVal);
    printf("long   크기:[%ld] bytes : 범위:[%ld ~ %ld] :값:[%ld]\n", sizeof(long), LONG_MIN, LONG_MAX, lVal);
    printf("double 크기:[%ld] bytes : 범위:[%.3e ~ %.3e] :값:[%f]\n", sizeof(double), DBL_MIN, DBL_MAX, dVal);

    return 0;       // main함수 종료
}

 

3) 컴파일/실행

c-lecture> gcc -o var var.c
c-lecture> ./var
char   크기:[1] byte  | 범위:[-128 ~ 127] | 값:[A]
short  크기:[2] byte  | 범위:[-32768 ~ 32767] | 값:[123]
int    크기:[4] bytes | 범위:[-2147483648 ~ 2147483647] | 값:[4567]
float  크기:[4] bytes | 범위:[1.175e-38 ~ 3.403e+38] | 값:[456.980011]
long   크기:[8] bytes | 범위:[-9223372036854775808 ~ 9223372036854775807] | 값:[12345678]
double 크기:[8] bytes : 범위:[2.225e-308 ~ 1.798e+308] | 값:[123456.980000]

 

4) 분석

  • 변수선언
    c언어에서 변수 선언은 c언어에서 지원하는 타입 변수명으로 선언합니다.
    char cVal;          char 타입으로 cVal 이라는 변수를 선언
    int nVal;             int 타입으로 nVal 이라는 변수를 선언
    double dVal;      doiuble 타입으로 dVal 이라는 변수를 선언
    구문 마지막에 세미콜론(;) 에 주의 하세요!
    ※ 기본적으로 음수값을 가질수 있습니다.
    ※ unsigned 를 타입앞에 붙여서 양수값만을 가지게 사용할 수 있습니다.

  • 값을 할당
    변수 = 값 으로 할당 합니다.
    cVal = 'A';      ->    ascii 문자를 할당 
    cVal = 65;      ->    ascii 문자에 대한 정수값을 할당
    ★위의 두문장은 똑같은 역활을 합니다. 'A' == 65
    ※ 리눅스에서 ascii 문자가 궁금하시면 man ascii 라고 치면 ascii 코드값이 나옵니다.

  • printf() 함수
    출력할 내용 + 서식 과 서식에 해당하는 값으로 이루어 집니다.
    서식과 값은 1:1로 대응합니다.
    %ld : long값을 표현하기 위한 서식
    %d  : int값을 표현하기 위한 서식
    \n : 줄바꿈(new line)

  • sizeof() 연산자
    sizeof(변수/타입)는 변수/타입의 크기(메모리)를 나타냅니다.
    실행결과를 보면 sizeof(char) : 1바이트, sizeof(int) : 4바이트 ... 등을 나타냅니다.
    개발하시다 보면 상당히 많이 사용하는 연산자중 하나 입니다. 잘 기억해두세요.
    ※ 변수에 대한 크기는 서버별로 차이가 있을수 있습니다. 반드시 개발하시는 서버에서 각 변수에 대한 크기를 확인하시기 바랍니다.

  • 메모리 관계
    프로그램에서 변수를 선언하면
    char cVal;  실제 메모리에 1바이트가 확보됩니다.
    int nVal: 실제 메모리에 4바이트가 확보됩니다.
    ★개발하실때 불필요한 변수를 선언하면 메모리가 낭비됩니다.

  • 타입별 MIN값, MAX값 
    CHAR_MIN/CHAR_MAX : char타입의 최소/최대값
    SHRT_MIN/SHRT_MAX : short타입의 최소/최대값
    INT_MIN/INT_MAX : int타입의 최소/최대값
    FLT_MIN/FLT_MAX : float타입의 최소/최대값
    LONG_MIN/LONG_MAX : long타입의 최소/최대값
    DBL_MIN/DBL_MAX : double타입의 최소/최대값 
    ※ MIN/MAX값을 사용하기 위해서는 
       #include <limits.h>
       #include <float.h>
       를 추가 해줘야 합니다.
타입 종류 크기 범위(값)
char 문자형 1 바이트 -128 ~ 127
short 정수형 2 바이트 -32768 ~ 32767
int 정수형 4 바이트 -2147483648 ~ 2147483647
long 정수형 8 바이트 -9223372036854775808 ~ 9223372036854775807
float 부동소수점 4 바이트 1.175e-38 ~ 3.403e+38
double 부동소수점 8 바이트 2.225e-308 ~ 1.798e+308
반응형