cμ–Έμ–΄ #6

2020. 1. 13. 02:14γ†πŸ“ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/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이 λ‚˜μ˜€κ²Œ λ˜λŠ”κ²ƒμ΄λ‹€. 

λ°˜μ‘ν˜•

'πŸ“ 개발 Β· ν”„λ‘œκ·Έλž˜λ° > 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