iuboost
3. 자료형 본문
C와 C++의 자료형 소개
프로그래밍 언어에서 자료형(Data Type)은 변수나 상수가 가질 수 있는 값의 종류와 그 값을 처리하는 방식을 정의합니다. C와 C++에서는 다양한 자료형을 제공하며, 효율적인 프로그램을 작성하기 위해 적절한 자료형을 선택하는 것이 중요합니다.
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 = #
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 |