iuboost

3. 자료형 본문

공부 정리

3. 자료형

iuboost 2024. 12. 18. 00:54

C와 C++의 자료형 소개

프로그래밍 언어에서 자료형(Data Type)은 변수나 상수가 가질 수 있는 값의 종류와 그 값을 처리하는 방식을 정의합니다. CC++에서는 다양한 자료형을 제공하며, 효율적인 프로그램을 작성하기 위해 적절한 자료형을 선택하는 것이 중요합니다.


1. 기본 자료형 (Primitive Data Types)

C와 C++에서 가장 많이 사용되는 기본 자료형은 다음과 같습니다:

정수형 (Integer Types)

char 1 -128 ~ 127 (signed) 문자 하나를 저장하거나 작은 정수값 저장
unsigned char 1 0 ~ 255 음수가 없는 8비트 정수
short 2 -32,768 ~ 32,767 작은 범위의 정수
unsigned short 2 0 ~ 65,535 음수가 없는 작은 정수
int 4 -2,147,483,648 ~ 2,147,483,647 기본 정수형
unsigned int 4 0 ~ 4,294,967,295 양의 정수만 표현
long 4 또는 8 플랫폼에 따라 다름 더 큰 범위의 정수
long long 8 약 -9경 ~ 9경 매우 큰 정수를 표현

자료형 크기(바이트) 값의 범위 설명

예시 코드:

#include <stdio.h>

int main() 
{
    char a = 'A';
    int num = 100;
    long long bigNum = 123456789012345LL;

    printf("문자: %c\n", a);
    printf("정수: %d\n", num);
    printf("큰 정수: %lld\n", bigNum);

    return 0;
}

실수형 (Floating-Point Types)

float 4 약 ±3.4E-38 ~ ±3.4E+38 소수점 6~7자리 정밀도
double 8 약 ±1.7E-308 ~ ±1.7E+308 소수점 15~16자리 정밀도
long double 8 또는 16 플랫폼에 따라 다름 더 높은 정밀도 제공

자료형 크기(바이트) 값의 범위 정밀도

예시 코드:

#include <stdio.h>

int main() 
{
    float pi = 3.14159f;
    double precisePi = 3.141592653589793;

    printf("float 값: %.7f\n", pi);
    printf("double 값: %.15lf\n", precisePi);

    return 0;
}

논리형 (Boolean Type)

C++에서는 bool 자료형이 존재하며, true와 false 값을 가집니다.
C에서는 stdbool.h 헤더를 통해 bool을 사용할 수 있습니다.

예시 코드 (C++):

#include <iostream>
using namespace std;

int main() 
{
    bool isTrue = true;
    bool isFalse = false;

    cout << "isTrue: " << isTrue << endl; // 출력: 1
    cout << "isFalse: " << isFalse << endl; // 출력: 0

    return 0;
}

2. 파생 자료형 (Derived Data Types)

기본 자료형을 확장하여 만든 파생 자료형은 다음과 같습니다:

배열 (Array)

  • 동일한 자료형의 여러 값을 저장하는 자료 구조입니다.
int arr[5] = {1, 2, 3, 4, 5};
printf("첫 번째 요소: %d\n", arr[0]);

포인터 (Pointer)

  • 메모리 주소를 저장하는 변수입니다.
int num = 10;
int *ptr = &num;

printf("num의 주소: %p\n", ptr);
printf("포인터를 통한 값: %d\n", *ptr);

열거형 (Enum)

  • 값의 목록을 정의하는 자료형입니다.
enum Day {SUN, MON, TUE, WED, THU, FRI, SAT};
enum Day today = WED;

printf("오늘은 %d일입니다.\n", today); // 출력: 3

구조체 (Struct)

  • 여러 자료형을 묶어서 하나의 자료형으로 정의합니다.
struct Person 
{
    char name[50];
    int age;
};

struct Person person = {"John", 30};
printf("이름: %s, 나이: %d\n", person.name, person.age);

3. 사용자 정의 자료형 (User-Defined Data Types)

C와 C++에서는 사용자가 직접 자료형을 정의할 수 있습니다.

typedef

typedef를 사용하면 자료형에 새로운 이름을 붙일 수 있습니다.

typedef unsigned int uint;
uint age = 25;
printf("나이: %u\n", age);

클래스 (Class, C++ 전용)

C++에서는 객체지향 프로그래밍을 위해 클래스를 사용합니다.

#include <iostream>
using namespace std;

class Car {
public:
    string brand;
    int year;

    void display() 
    {
        cout << "브랜드: " << brand << ", 연식: " << year << endl;
    }
};

int main() 
{
    Car myCar;
    myCar.brand = "Tesla";
    myCar.year = 2023;

    myCar.display();

    return 0;
}

4. 자동 자료형 (Auto Types, C++11 이후)

C++11부터는 auto 키워드를 사용해 변수의 자료형을 자동으로 유추할 수 있습니다.

auto x = 10;    // int
auto y = 3.14;  // double
auto z = "Hello"; // const char*

cout << "x: " << x << ", y: " << y << ", z: " << z << endl;

마무리

C와 C++에서는 다양한 기본 자료형파생 자료형, 그리고 사용자 정의 자료형을 제공하여 프로그램에 맞는 데이터를 효율적으로 처리할 수 있습니다.
프로그램의 성능 최적화가독성을 위해 상황에 맞는 자료형을 선택하는 것이 중요합니다.

  • C: 절차지향적 코드에서 주로 기본 자료형을 사용합니다.
  • C++: 객체지향적 코드에서 클래스나 자동 타입 추론을 활용하여 더 유연하게 코드를 작성합니다.

자료형의 이해는 메모리 관리효율적인 코드 작성의 첫걸음입니다!

'공부 정리' 카테고리의 다른 글

6. 메모리와 주소3  (0) 2024.12.21
5. 메모리와 주소2  (0) 2024.12.21
4. 메모리와 주소  (0) 2024.12.18
2. 비트와 바이트  (1) 2024.12.18
1. 객체지향과 절차지향  (0) 2024.12.18