c언어 #6

2020. 1. 13. 02:14Programming Language/C

반응형

<각 자료형의 크기>

자료형

크기

값의 범위

char

1 byte

-128~127, 0~255

unsigned char

1 byte

0~255

signed char

1 byte

-128~127

int

2 or 4 byte

-32,768~32,767 or
-2,147,483,648 ~ 2,147,483,647

unsigned int

2 or 4 byte

0~65,535 or
 0 ~ 4,294,967,295

short

2 byte

-32,768 ~ 32,767

unsigned short

2 byte

0 ~ 65,535

long

4 byte

-2,147,483,648 ~ 2,147,483,647

unsigned long

4 byte

0 ~ 4,294,967,295

<Overflow Underflow>

 

char 크기는 -128 ~ 127까지다. 

근데 cNum1에는 범위가 벗어난 128과 cNum2에는 범위가 벗어난 -129가 선언이 되었다.

 

출력 결과는 이렇다.

 

출처 : https://dojang.io/mod/page/view.php?id=32

 

C 언어 코딩 도장: 7.2 오버플로우와 언더플로우 알아보기

만약 정수 자료형에서 저장할 수 있는 범위를 넘어서면 어떻게 될까요? 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. integer_overflow.c #include int main() { char num1 = 128; // char에 저장할 수 있는 최댓값 127보다 큰 수를 할당 // 오버플로우 발생 unsigned char num2 = 256; // unsigned char에 저장할 수 있는 최댓값 255보다 큰 수를 할당 // 오버플로

dojang.io

 

 

1. cNum1에 -128이 나오냐면 처음에 cNum1에 128을 넣었다. 하지만 크기는 -128 ~ 127까지다. 127까지인데 128을 넣어서 오버플로우가 발생한다(1만큼). 그래서 127의 다음숫자는 128이지만 char 자료형의 크기는 -128 ~ 127까지기 때문에 127 다음 숫자는 -128이 된다.

 

2. cNum2에 127이 나오냐면 cNum2에 -129를 넣었다. char의 크기는 -128 ~ 127 까지이다.

-128보다 적은 숫자를 넣었으므로 언더플로우 발생. 그래서 -128에서 그전숫자인 127이 나오게 되는것이다. 

반응형

'Programming Language > C' 카테고리의 다른 글

c언어 #8  (0) 2020.03.21
c언어 #7  (0) 2020.03.21
c언어 #5  (0) 2020.01.13
c언어 #4  (0) 2020.01.13
c언어 #3  (0) 2020.01.12