λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
🀷🏼‍♀️ Etc.../- C, C++, Python, Android

[C μ–Έμ–΄] λ³€μˆ˜μ™€ μ—°μ‚°μžμ— λŒ€ν•΄μ„œ (int, char, float, double, long)

by Wonit 2021. 6. 22.

C μ–Έμ–΄μ˜ λ³€μˆ˜

 

μš°μ„  λ³€μˆ˜λž€ λ¬΄μ—‡μΌκΉŒ?

 

λ³€μˆ˜λŠ” λ°”λ€” 수 μžˆλŠ”, λ³€ν•  수 μžˆλŠ” μ–΄λ– ν•œ 값이닀.

 

λ³€μˆ˜λŠ” 숫자의 ν‘œν˜„κ³Ό λ©”λͺ¨λ¦¬μ˜ μ£Όμ†Œκ°’ 그리고 κ΄€λ ¨λœ 데이터λ₯Ό λ¬Άμ–΄μ„œ μ‚¬μš©ν•˜λŠ” ν˜•νƒœμ˜ μ‚¬μš©μ— λ”°λΌμ„œ λ‚˜λ‰˜κ²Œ λœλ‹€.

 

  • 숫자의 ν‘œν˜„
    • λ§ˆμ΄ν¬λ‘œν”„λ‘œμ„Έμ„œμ˜ ALU에 μ˜ν•΄ λ™μž‘ν•˜κ²Œ λ˜λŠ” 것듀
      • μ •μˆ˜ν˜•
        • int
        • char
      • μ‹€μˆ˜ν˜•
        • short
        • double
      • λ³€μˆ˜μ˜ 크기
        • short
        • long
      • 음수 μ–‘μˆ˜
        • signed
        • unsigned
  • λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°’μ˜ ν‘œν˜„
    • 데이터가 μžˆλŠ” μœ„μΉ˜μ˜ ν‘œν˜„
      • 포인터 λ³€μˆ˜
  • 데이터λ₯Ό λ¬Άμ–΄μ„œ ν‘œν˜„
    • struct λ³€μˆ˜

 

λ³€μˆ˜μ˜ νƒ€μž…μ— λ”°λ₯Έ 크기와 λ²”μœ„

int ν˜• 데이터 νƒ€μž…μ€ λŒ€λž΅ 21μ–΅μ˜ 수λ₯Ό μ €μž₯ν•  수 μžˆλ‹€.

 

λ§Œμ•½ 21얡을 λ„˜μ–΄κ°€λ©΄ μ–΄λ–€ 일이 μƒκΈΈκΉŒ?

 

#include <stdio.h>

int main() {
    int number;

    // int 데이터 νƒ€μž…μ˜ μ΅œλŒ€ 수 2147483647
    number = 2147483647;

    printf("%d", number);
}

 

그럼 κ²°κ³Όλ‘œλŠ” -21μ–΅...이 λ‚˜μ˜€κ²Œ λœλ‹€.

 

μ΄λŠ” Overflow(μ˜€λ²„ν”Œλ‘œ) 라고도 ν•˜λŠ”λ°, μ‚°μˆ  연산이 μ§€μ •λœ 자릿수둜 ν‘œν˜„ν•  μˆ˜μžˆλŠ” λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ 숫자 κ°’ (μ΅œλŒ€ 값보닀 λ†’κ±°λ‚˜ μ΅œμ†Œκ°’λ³΄λ‹€ μž‘μŒ)을 λ§Œλ“€λ €κ³  ν•  λ•Œ λ°œμƒν•œλ‹€.

 

μžμ„Έν•œκ±΄ λ‹€μŒμ— 배울 κ²ƒμ΄λ‹ˆ 일단 λ„˜μ–΄κ°€μž

 

이λ₯Ό ν†΅ν•΄μ„œ μ•Œ 수 μžˆλ“―μ΄ 데이터 νƒ€μž…μ˜ μž…λ ₯ κ°€λŠ₯ λ²”μœ„λ₯Ό λ„˜μ–΄κ°„λ‹€λ©΄ μš°λ¦¬κ°€ μ›ν•˜λŠ” 값이 λ‚˜μ˜€μ§€ μ•Šμ„ 수 μžˆλ‹€.

 

κ·Έλž˜μ„œ 데이터 νƒ€μž…μ˜ μ •ν™•ν•œ λ²”μœ„λ₯Ό μ•„λŠ” 것이 μ€‘μš”ν•˜λ‹€.

 

Data Type 크기 λ²”μœ„
char 1 Byte unsigned char μ˜ 경우 0 λΆ€ν„° 255, signed char (κ·Έλƒ₯ char) 의 경우 -128 λΆ€ν„° 127 κΉŒμ§€
int 4 Byte 4 λ°”μ΄νŠΈ 일 경우 signed int μ˜ 경우 -2,147,483,648 μ—μ„œ 2,147,483,647 κΉŒμ§€. unsigned int μ˜ 경우 0 λΆ€ν„° 4,294,967,295 κΉŒμ§€
short 2 Byte 2 λ°”μ΄νŠΈμΌ 경우 signed short λŠ” -32,768 μ—μ„œ 32,767. unsigned short λŠ” 0 λΆ€ν„° 65,535 κΉŒμ§€
long 8 Byte  
long long 8 Byte 8 λ°”μ΄νŠΈμΌ 경우 signed long long λŠ” -9223372036854775808 λΆ€ν„° 9223372036854775807 κΉŒμ§€. unsigned long long λŠ” 0 μ—μ„œ 18446744073709551615 (λŒ€λž΅ 1.84×1019) κΉŒμ§€
float 4 Byte  λΆ€ν„° ±3.4×1034 κΉŒμ§€. μ •λ°€λ„λŠ” λŒ€λž΅ 10μ§„μˆ˜λ‘œ 6 자리 정도
double 8 Byte  λΆ€ν„° ±1.7×10308 κΉŒμ§€. μ •λ°€λ„λŠ” λŒ€λž΅ 10μ§„μˆ˜λ‘œ 15 자리 정도

λ³€μˆ˜μ˜ 좜λ ₯

λ³€μˆ˜λ₯Ό 좜λ ₯ν•˜κΈ° μœ„ν•΄μ„œλŠ” 보톡 printf() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€.

 

printf λŠ” formatting ν•œ 좜λ ₯을 ν•˜κ²Œλ˜λŠ”λ°, μ„œμ‹ μ§€μ •μž, format specifier 을 ν†΅ν•΄μ„œ 좜λ ₯ν•  데이터λ₯Ό μ–΄λ–€ ν˜•νƒœλ‘œ 좜λ ₯ν•  것인지 지정할 수 μžˆλ‹€

 

λŒ€ν‘œμ μΈ μ„œμ‹ μ§€μ •μžλ‘œλŠ” λ‹€μŒκ³Ό 같은 것듀이 μ‘΄μž¬ν•œλ‹€.

 

  • %d
    • λΆ€ν˜Έ μžˆλŠ” 10진 μ •μˆ˜
  • %c
    • ν•˜λ‚˜μ˜ 문자
  • %f
    • κ³ μ • μ†Œμˆ˜μ μœΌλ‘œ ν‘œν˜„ν•œ μ‹€μˆ˜
  • %s
    • λ¬Έμžμ—΄
  • %o
    • λΆ€ν˜Έ μ—†λŠ” 8μ§„μˆ˜
  • %x
    • λΆ€ν˜Έ μ—†λŠ” 16μ§„μˆ˜
  • %%
    • % 좜λ ₯
int main() {
    int number = 127;

    char alpha = 'c';

    float weight = 90.4;
    double height = 183.4;

    printf("숫자 : %d \n", number);

    printf("μ•ŒνŒŒλ²³ : %c \n", alpha);

    printf("체쀑 : %f \n", weight);

    printf("ν‚€ : %f \n", height);

    printf("λ¬Έμžμ—΄ : %d", "C μ–Έμ–΄ 배우기");
}

μ—°μ‚°μž

 

μ—°μ‚°μžλŠ” λ¬΄μ—‡μΌκΉŒ?

 

μ—°μ‚°μžλŠ” μˆ˜ν•™μ˜ μ—°μ‚°κ³Ό μœ μ‚¬ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” κΈ°ν˜Έλ‚˜ 문자λ₯Ό μ˜λ―Έν•œλ‹€.

 

기본적으둜 μ—°μ‚°μžλŠ” μ—°μ‚°μžμ˜ νŠΉμ„±μ„ μ΄μš©ν•΄ λ‹€λ₯Έ ν˜•νƒœλ‘œ λ³€ν˜•μ‹œν‚€λŠ” 역할을 μˆ˜ν–‰ν•˜κ²Œ λœλ‹€.

 

μ—°μ‚°μž μš°μ„ μˆœμœ„

 

μ—°μ‚°μžλŠ” μ—¬λŸ¬ ν˜•νƒœλ‘œ λ‹€λ₯Έ μ—°μ‚°μžμ™€ ν•¨κ»˜ μœ„μΉ˜ν•΄ μžˆμ„ 수 μžˆλ‹€.

 

이런 μƒν™©μ—μ„œ μ–΄λ–€ μ—°μ‚°μžκ°€ λ¨Όμ € 연산을 μˆ˜ν–‰ν•˜λŠ”μ§€μ— 따라 κ²°κ³Ό 값이 λ‹€λ₯΄λ‹€.

 

예λ₯Ό λ“€λ©΄ 3 * 4 + 10 μ΄λΌλŠ” 연산이 μ‘΄μž¬ν•  λ•Œ, * μ—°μ‚°μžκ°€ κ°€μž₯ λ¨Όμ € λ™μž‘ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€.

 

ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ§ˆλ‹€ μ΄λŠ” μ‘°κΈˆμ”© λ‹€λ₯Ό 수 μžˆλŠ”λ°, Cμ—μ„œλ„ μ—­μ‹œ μ—°μ‚°μžμ˜ μš°μ„ μˆœμœ„κ°€ μ‘΄μž¬ν•˜λ―€λ‘œ ν™•μΈν•΄λ³΄μž.

 

μ—°μ‚°μžμ˜ μ’…λ₯˜

 

μ—°μ‚°μžλŠ” λ‹€μŒκ³Ό 같은 μ’…λ₯˜λ‘œ λ‚˜λ‰  수 μžˆλ‹€.

 

  • μ‚°μˆ  μ—°μ‚°μž
    • 사칙연산
    • 증감
  • 비ꡐ/관계 μ—°μ‚°μž
    • κ°™μŒ
    • 같지 μ•ŠμŒ
    • λŒ€μ†Œ 비ꡐ
  • 논리 μ—°μ‚°μž
    • 논리 λΆ€μ • NOT
    • 논리 AND
    • 논리 OR
  • λΉ„νŠΈ μ—°μ‚°μž
    • λΉ„νŠΈ NOT
    • λΉ„νŠΈ AND
    • λΉ„νŠΈ OR
    • μ‰¬ν”„νŠΈ
  • 포인터 μ—°μ‚°μž

 

μ—°μ‚°μž μš°μ„ μˆœμœ„

 

μ—°μ‚°μžμ˜ μš°μ„ μˆœμœ„μ— λ”°λΌμ„œ κ²°κ³Ό 값이 λ‹€λ₯Ό 수 μžˆλ‹€κ³  μ•žμ„œ 이야기 ν–ˆλŠ”λ°, μ‹€μ œλ‘œ μ–΄λ–€ μ—°μ‚°μžκ°€ μ–΄λ–€ μš°μ„ μˆœμœ„λ₯Ό κ°€μ§€λŠ”μ§€ μ•Œμ•„λ³΄μž.

 

λŒ“κΈ€