본문 바로가기
Computer Science/C 언어

[C #7] 기본 데이터 타입 (Basic Types)

by rnasterofmysea 2024. 12. 5.
반응형

7장: 기본 데이터 타입 (Basic Types)

 

  1. 기본 타입: int, float, double, char
  2. 정수와 부동소수점: 범위와 크기
  3. typedef: 새로운 데이터 타입 정의
  4. 데이터 타입 변환: 암시적, 명시적

7.1 C 언어의 데이터 타입

C 언어는 변수에 저장되는 데이터의 종류를 지정하기 위해 여러 데이터 타입을 제공합니다.

기본 데이터 타입

데이터 타입 크기 (byte) 설명 예시

int 4 (대부분 시스템) 정수형 42, -10
float 4 단정밀도 부동소수점 3.14, -0.5
double 8 배정밀도 부동소수점 3.14159
char 1 문자형 (ASCII 값) 'A', 'a'

자료형 크기 확인

sizeof 연산자를 사용해 데이터 타입의 크기를 확인할 수 있습니다:

#include <stdio.h>

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

    return 0;
}

7.2 정수형 데이터 타입

종류 및 크기

데이터 타입 크기 (byte) 값의 범위

short int 2 -32,768 ~ 32,767
int 4 -2,147,483,648 ~ 2,147,483,647
long int 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
unsigned int 4 0 ~ 4,294,967,295

부호 있는 정수와 없는 정수

  • 부호 있는 정수 (signed): 음수와 양수를 저장 가능. (기본값)
  • 부호 없는 정수 (unsigned): 양수와 0만 저장 가능.

예제: 부호 있는 정수와 없는 정수

#include <stdio.h>

int main(void) {
    int signed_num = -10;
    unsigned int unsigned_num = 10;

    printf("signed int: %d\n", signed_num);
    printf("unsigned int: %u\n", unsigned_num);

    return 0;
}

7.3 부동소수점 데이터 타입

종류 및 정밀도

데이터 타입 크기 (byte) 유효 숫자 자리수 범위

float 4 약 6~7자리 ±3.4E-38 ~ ±3.4E+38
double 8 약 15~16자리 ±1.7E-308 ~ ±1.7E+308
long double 16 약 19~20자리 ±3.4E-4932 ~ ±1.1E+4932

소수점 출력

printf에서 부동소수점을 출력할 때 %f와 %e를 사용합니다:

#include <stdio.h>

int main(void) {
    float num = 3.14159;

    printf("소수점 출력 (기본): %f\n", num);
    printf("지수 형태로 출력: %e\n", num);

    return 0;
}

출력 결과:

소수점 출력 (기본): 3.141590
지수 형태로 출력: 3.141590e+00

7.4 문자형 데이터 타입

char 데이터 타입

  • 크기: 1 바이트
  • 값의 범위: -128 ~ 127 (signed), 0 ~ 255 (unsigned)

ASCII 값 출력

문자는 내부적으로 **정수값(ASCII)**으로 저장됩니다:

#include <stdio.h>

int main(void) {
    char ch = 'A';

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

    return 0;
}

출력 결과:

문자: A
ASCII 값: 65

7.5 typedef를 사용한 데이터 타입 정의

typedef는 새로운 데이터 타입 이름을 정의하는 데 사용됩니다.

기본 사용법

typedef 기존_데이터_타입 새_이름;

예제

#include <stdio.h>

typedef unsigned int uint;

int main(void) {
    uint num = 100;  // unsigned int와 동일
    printf("값: %u\n", num);

    return 0;
}

7.6 데이터 타입 변환 (Type Casting)

데이터 타입 변환은 한 데이터 타입을 다른 데이터 타입으로 변환하는 과정입니다.

암시적 변환

컴파일러가 자동으로 수행.

int a = 10;
float b = a;  // int → float

명시적 변환

프로그래머가 직접 변환.

float a = 10.5;
int b = (int)a;  // float → int

예제

#include <stdio.h>

int main(void) {
    int a = 5, b = 2;
    float result;

    result = (float)a / b;  // 명시적 변환
    printf("결과: %.2f\n", result);

    return 0;
}

출력 결과:

결과: 2.50

7.7 데이터 타입 크기 확인 프로그램

예제

#include <stdio.h>

int main(void) {
    printf("char: %zu 바이트\n", sizeof(char));
    printf("int: %zu 바이트\n", sizeof(int));
    printf("float: %zu 바이트\n", sizeof(float));
    printf("double: %zu 바이트\n", sizeof(double));
    printf("long double: %zu 바이트\n", sizeof(long double));

    return 0;
}

출력 결과 (시스템에 따라 다름):

char: 1 바이트
int: 4 바이트
float: 4 바이트
double: 8 바이트
long double: 16 바이트

 

반응형

'Computer Science > C 언어' 카테고리의 다른 글

[C #9] 함수 (Functions)  (3) 2024.12.07
[C #8] 배열 (Arrays)  (1) 2024.12.06
[C #6] 반복문 (Loops)  (0) 2024.12.04
[C#5] 조건문 (Selection Statements)  (1) 2024.12.03
[C#4] 표현식 (Expressions)  (0) 2024.12.02