신규 블로그를 만들었습니다!
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;
}
'Language > C&C++' 카테고리의 다른 글
C언어 :: 연산자와 연산자의 종류 #9 (0) | 2018.01.28 |
---|---|
C언어 :: ASCII 코드와 코드표 #8 (0) | 2018.01.27 |
C언어 :: 자료형 - 정수형, 실수형 #6 (0) | 2018.01.25 |
C언어 :: 상수와 상수의 종류, const와 #define #5 (0) | 2018.01.25 |
C언어 :: 변수와 메모리, 선언 및 초기화 #4 (0) | 2018.01.23 |
최근댓글