| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- 구현
- 동적계획법
- 이분탐색
- 그리디
- kotlin
- level2
- 코틀린
- 2018 KAKAO BLIND RECRUITMENT
- 다이나믹프로그래밍
- java
- 누적합
- cpp
- Stack
- lv2
- BFS
- C
- dp
- 컴퓨터비전
- JavaScript
- 통신 인터페이스
- 자바
- 임베디드
- dfs
- level3
- 프로그래머스
- 우선순위큐
- c++
- 컴퓨터 비전
- 백준
- 다이나믹 프로그래밍
Archives
- Today
- Total
코드를 느껴바라
[C/C++] C언어 자료형 본문
1. float와 double의 정밀도
| 자료형 | 유효 정밀도 | 특징 |
|---|---|---|
| float | 약 7~10자리 | 단정밀도 실수, 메모리 4바이트 |
| double | 약 15~20자리 | 배정밀도 실수, 메모리 8바이트 |
float는 메모리를 적게 사용하지만 정밀도가 낮고,
double은 더 많은 메모리를 사용하지만 훨씬 높은 정밀도를 가진다.
정확한 수치 계산이 필요한 경우 double을 사용하는 것이 기본 원칙이다.
2. C에서의 bool 타입
C 언어에는 원래 논리 자료형이 존재하지 않는다.
따라서 stdbool.h 헤더를 포함해야 bool, true, false를 사용할 수 있다.
#include <stdbool.h>
bool flag = true;
내부적으로는 bool은 unsigned char로 구현되어 있다.
3. 선언과 정의의 차이
| 구분 | 의미 |
|---|---|
| 선언 (Declaration) | “이런 게 존재한다”는 정보만 컴파일러에게 알림 |
| 정의 (Definition) | 실제 메모리 공간을 생성 |
extern int x; // 선언
int x = 10; // 정의
선언은 여러 번 가능하지만, 정의는 한 번만 가능하다.
4. 기본형과 파생형
| 구분 | 예시 |
|---|---|
| 기본형 | int, char, float, double |
| 파생형 | 배열, 포인터, 구조체, 공용체, 함수 |
int a; // 기본형
int* p; // 파생형
int arr[10]; // 파생형
5. typedef
typedef는 자료형의 별칭을 정의하는 문법이다.
typedef unsigned int uint;
uint a = 10;
특히 함수 포인터를 간단하게 만들 때 많이 사용된다.
typedef int (*FuncPtr)(int, int);
FuncPtr f;
6. 묵시적 형변환과 명시적 형변환
묵시적 형변환 (Implicit Casting)
컴파일러가 자동으로 타입을 변환한다.
int a = 10;
double b = a; // int → double 자동 변환
명시적 형변환 (Explicit Casting)
프로그래머가 강제로 변환한다.
double x = 3.14;
int y = (int)x; // 소수점 이하 버림
7. union (공용체)
union은 모든 멤버가 같은 메모리 공간을 공유하는 자료형이다.
union Data {
int i;
float f;
char c;
};
특징:
- 크기는 가장 큰 멤버 기준
- 한 번에 하나의 값만 의미 있음
- 메모리 절약 및 하드웨어 레지스터 다룰 때 자주 사용
8. 리터럴 상수와 심볼릭 상수
리터럴 상수
코드에 직접 적는 값.
10
3.14
'a'
"Hello"
심볼릭 상수
이름을 붙인 상수.
#define PI 3.141592
const int MAX = 100;
가독성과 유지보수를 위해 심볼릭 상수를 사용하는 것이 원칙이다.
마무리
이 개념들은 C 언어의 메모리 모델, 타입 시스템, 컴파일 구조를 이해하는 핵심 기반이다.
이걸 정확히 이해하면 이후 포인터, 구조체, 동적 할당, 링킹 에러까지 자연스럽게 이어진다.
반응형
'개발 > 임베디드(Embedded)' 카테고리의 다른 글
| [소프트웨어 공학] Automotive-SPICE 개요 (A-SPICE) (2) | 2026.01.23 |
|---|---|
| [네트워크] CAN 통신 (2) | 2026.01.10 |
| [C/C++] 정의와 선언의 차이 in C언어 (0) | 2025.12.30 |
| [C/C++] C에서 객체를 만드는 방법: 구조체와 생명주기 (0) | 2025.12.24 |
| [C/C++] C언어 프로젝트에서의 모듈화 (2) | 2025.12.23 |
