ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 상수와 기본 자료형
    Develpment/C 2020. 9. 13. 21:24

    1. 기본 자료형의 종류와 데이터 표현 범위

     

     자료형 (data type)

     할당되는 메모리 크기

     표현 가능한 데이터의 범위

     정수형

     char

     1 byte

     -128 ~ +127

     short

     2 byte

     -32768 ~ + 32767

     int

     4 byte

     -2147483648 ~ +2147483647

     long

     4 byte

     -2147483648 ~ +2147483647 

    실수형 

     float

     4 byte

     3.4x10^-37 ~ 3.4x10^38

     double

     8 byte

     1.7x10^-307 ~ 1.7x10^308

     long double

     8 byte 혹은 그 이상

     차이를 많이 보임

     

     

    2. 실수형 자료형의 정밀도

     

     자료형

     정밀도

     float

     소수 이하 6자리

     double

     소수 이하 15자리

     long double

     double의 정밀도와 같거나 크다.

     

    3. 정수형 자료형의 특성

     

     자료형

     메모리 크기

     표현 가능한 데이터의 범위

     char (signed char)

     1 byte

     -127 ~ +128

     unsigned char

     1 byte

     0 ~ (127+128)

     short (signed short)

     2 byte

     -32768 ~ +32767

     unsigned short

     2 byte

     0 ~ (32767+32768)

     int (signed int)

     4 byte

     -2147483648 ~ +2147483647

     unsigned int

     4 byte

     0 ~ (2147483647+2147483648)

     logn (signed long)

     4 byte

     -2147483648 ~ +2147483647

     unsigned long

     4 byte

     0 ~ (2147483647+2147483648)

     

     

    4. 리터럴(literal) 상수

     

     int val 

     =

    30 

     +

     40

     

     [ 변수 : val ]

     

    [상수]

     

    [상수]

     

     

     

    5. 심볼릭(Symbolic) 상수

     

    ex) const int MAX = 100;

     

    6. 자동 형 변환

     

    • 소수부의 손실 : 실수형 데이터를 정수형 데이터로 변환하려는 과정에서 발생
    • 값의 표현 범위가 넓은 데이터로의 형 변환은 아무런 문제가 발생하지 않는다. (ex. char -> int, float -> double)

     

    7. 정수의 승격 (intergral promotion) : "int형 연산이 빠른 이유"

     

    • 연산의 효율성을 고려하여, 연산을 하기에 적절한 자료형으로 형 변환을 거친 다음 연산을 진행하는 것.

    ex) char c1 = 10, c2 = 20;

    char c3 = c1 + c2;

     

    char의 표현 범위 : -128 ~ +127

    c1, c2에 int형 데이터 10, 20을 대입할 경우 자동 형 변환이 발생, 표현범위 내이기 때문에 손실은 없음.

    c3에 c1+c2 연산을 진행할 때 c1, c2가 가지고 있는 값을 int형 데이터로 변환 후 덧셈연산 수행.

    덧셈연산 수행 후 int형 데이터를 다시 char형 데이터로 변환 후 c3에 대입.

    char형 데이터가 연산을 위하여 int형 데이터로 승격.

    ( int형 연산만 지원하는 이유는 정수형 연산이라는 일 자체를 단일화해서 성능을 향상시키기 위한 것 )

     

    8. 산술 연산 형 변환 방향

     

     

    char

     ->

    int 

    -> 

    long 

    -> 

    float 

    -> 

    double 

    -> 

    long double 

     

    * 산술 연산 과정에서 일어나는 형 변환은 데이터의 손실이 최소화 되는 방향으로 진행

    * float형이 long형의 변환의 우선순위가 높은 이유는 long형이 float형으로 변환할 경우 데이터의 손실이 발생하지 않을 확률이 어느 정도 되지만, float형이 long형으로 변환할 경우 '소수부의 손실'이 100%이기 때문

    'Develpment > C' 카테고리의 다른 글

    메모리 영역 (code, data, bss, heap, stack)  (0) 2020.09.13
    printf 와 scanf 함수에 대한 고찰  (0) 2020.09.13
    데이터 표현 방식의 이해  (0) 2020.09.13
    변수  (0) 2020.09.13

    댓글

Designed by Tistory.