신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

1. signed와 unsigned

자료형에는 음수 양수를 모두 표현하는 signed와 양수만을 표현하는 unsigned로 나워진다.

 

char

signed : -128 ~ 127

unsigned : 0 ~(128 + 127)

 

short

signed : -32768 ~ 32767

unsigned : 0 ~ (32768 + 32767)

 

int

signed : -217483648 ~ 2147483647

unsigned : 0 ~ (2147483647 + 217483648)

 

long

signed : -217483648 ~ 2147483647

unsigned : 0 ~ (2147483647 + 217483648)

 

 

 

2. underflow와 overflow

표현 범위를 벗어나는 값을 벗어날때 underflow 또는 overflow가 발생한다.

예를들어, char c = 128; 를 보면

char는 127까지 표현하기 때문에 overflow가 일어나면서 -128 이라는 값을 가진다.

반대로 char c = -129; 넣으면

-128까지 표현하기 때문에 underflow가 발생하고, 127이라는 값을 가진다.

 

 

왜 다른 값을 가지게 될까?

그 이유는 순환하는 구조를 갖고 있기 때문에 127을 넘어선 128은 표현할수 있는 범위를 벗어났기 때문에 아래 경계값으로 순환되면서 -128이 된다.

 

 

3. 코딩해보기
#include <stdio.h>

int main(void) {

    char c = 128; // -128 ~ 127 을 벗어난 값
    printf("c : %d", c); // overflow 발생
    printf("\n");

    c = -129;
    printf("c : %d", c); // underflow 발생
    printf("\n");

    unsigned char un_c = 200;
    printf("un_c : %d", un_c);
    printf("\n");

    return 0;
}
​

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기