C언어 초급 - 3장: 변수와 데이터 타입 (3.2 기본 데이터 타입)

2025. 2. 23. 16:33프로그래밍 언어/C

3.2 기본 데이터 타입

C 언어에서 데이터 타입(Data Type)은 변수에 저장할 데이터의 크기와 형식을 결정하는 중요한 요소입니다.
각 데이터 타입은 특정 크기의 메모리를 차지하며, 해당 범위 내의 값만 저장할 수 있습니다.


1. C 언어의 기본 데이터 타입

C 언어에서 자주 사용되는 기본 데이터 타입은 다음과 같습니다.

데이터 타입 설명 크기 (바이트) 값의 범위 (32비트 시스템 기준)
char 문자 (ASCII 코드) 1 byte -128 ~ 127 (signed), 0 ~ 255 (unsigned)
int 정수 (기본 데이터 타입) 4 bytes -2,147,483,648 ~ 2,147,483,647
float 단정밀도 실수 4 bytes ±3.4E-38 ~ ±3.4E+38
double 배정밀도 실수 (더 정밀한 실수 표현) 8 bytes ±1.7E-308 ~ ±1.7E+308

📌 참고:

  • int의 크기는 컴파일러 및 운영체제에 따라 다를 수 있음 (일반적으로 4바이트)
  • float과 double은 소수점 이하 값을 저장할 수 있음
  • char는 1바이트 크기의 문자 저장 (ASCII 또는 유니코드 사용 가능)

2. 정수형 데이터 타입 (int)

2.1 int란?

  • int(integer)는 정수를 저장하는 데이터 타입입니다.
  • 일반적으로 4바이트(32비트) 크기를 가지며, 양수와 음수를 포함할 수 있습니다.

2.2 int 사용 예제

#include <stdio.h>

int main() {
    int num1 = 100;
    int num2 = -50;

    printf("num1: %d\n", num1);
    printf("num2: %d\n", num2);

    return 0;
}

출력 결과

num1: 100
num2: -50

3. 실수형 데이터 타입 (float, double)

3.1 float란?

  • float은 소수점을 포함한 실수를 저장하는 데이터 타입입니다.
  • 4바이트 크기를 가지며, 일반적으로 소수점 이하 6~7자리의 정밀도를 가집니다.

3.2 double이란?

  • double은 float보다 더 높은 정밀도의 실수를 저장할 수 있는 데이터 타입입니다.
  • 8바이트 크기를 가지며, 소수점 이하 15~16자리까지 저장 가능합니다.

3.3 float과 double 비교 예제

#include <stdio.h>

int main() {
    float pi_float = 3.141592f;
    double pi_double = 3.141592653589793;

    printf("float 값: %.6f\n", pi_float);
    printf("double 값: %.15lf\n", pi_double);

    return 0;
}

출력 결과

float 값: 3.141592
double 값: 3.141592653589793

📌 설명

  • %.6f → float의 소수점 6자리까지만 출력
  • %.15lf → double의 소수점 15자리까지 출력

💡 주의:

  • float 값을 선언할 때 f(예: 3.141592f) 를 붙여야 함.
  • double 값을 출력할 때는 %lf를 사용해야 함.

4. 문자형 데이터 타입 (char)

4.1 char란?

  • char(Character)는 문자 하나를 저장하는 데이터 타입입니다.
  • 크기는 1바이트(8비트)이며, ASCII 코드값(0~255)을 저장할 수 있습니다.

4.2 char 사용 예제

#include <stdio.h>

int main() {
    char letter = 'A';
    char symbol = '@';

    printf("문자: %c\n", letter);
    printf("기호: %c\n", symbol);

    return 0;
}

출력 결과

문자: A
기호: @

📌 주의 사항

  • char 값은 작은따옴표(')로 감싸서 저장해야 함.
    char a = 'A';  // 올바른 선언
    char b = "B";  // 오류 발생 (큰따옴표 사용 X)
    
  • char는 내부적으로 ASCII 코드 값(정수값)으로 저장됨.

4.3 char의 ASCII 코드 값 확인

#include <stdio.h>

int main() {
    char letter = 'A';

    printf("문자: %c\n", letter);
    printf("ASCII 코드값: %d\n", letter);

    return 0;
}

출력 결과

문자: A
ASCII 코드값: 65

📌 설명

  • 'A'는 내부적으로 ASCII 코드 65로 저장됨.

5. 데이터 타입 크기 확인 (sizeof)

C 언어에서는 sizeof() 연산자를 사용하여 데이터 타입의 크기를 확인할 수 있습니다.

#include <stdio.h>

int main() {
    printf("char 크기: %lu 바이트\n", sizeof(char));
    printf("int 크기: %lu 바이트\n", sizeof(int));
    printf("float 크기: %lu 바이트\n", sizeof(float));
    printf("double 크기: %lu 바이트\n", sizeof(double));

    return 0;
}

출력 결과 (운영체제 및 컴파일러에 따라 다를 수 있음)

char 크기: 1 바이트
int 크기: 4 바이트
float 크기: 4 바이트
double 크기: 8 바이트

📌 설명

  • sizeof(자료형) → 해당 자료형의 크기를 바이트 단위로 반환
  • sizeof(변수명) → 특정 변수의 크기 확인 가능

6. 정리

데이터 타입 설명  크기  범위
char 문자 1개 저장 1 byte -128 ~ 127 (signed), 0 ~ 255 (unsigned)
int 정수 저장 4 bytes -2,147,483,648 ~ 2,147,483,647
float 실수 저장 (단정밀도) 4 bytes ±3.4E-38 ~ ±3.4E+38
double 실수 저장 (배정밀도) 8 bytes ±1.7E-308 ~ ±1.7E+308

📌 추가 사항

  • 정수형(int)과 실수형(float, double)의 크기는 운영체제 및 컴파일러에 따라 달라질 수 있음.
  • char는 내부적으로 ASCII 코드 값을 저장하며, 1바이트 크기를 가짐.