들어가며
즐거운 주말!
ㅤ
오늘의 키워드
const
const는 “자신의 왼쪽에 있는 것을 변경 불가능하게 만든다”
int * const a- 포인터 자체를 수정하지 못함 / int 값은 변경될 수 있다.
int const * a- int가 수정되지 못함 / 포인터주소는 변경될 수 있다.
const int * a- 가장 왼쪽에 const가 있는 경우에는 타입을 상수화
- int const * a 와 동일함
- int가 수정되지 못함 / 포인터주소는 변경될 수 있다.
const int * const a- int 값을 변경하지 못하고, 포인터 값도 변경하지 못한다.
ㅤ
Implementation-Defined Behaviour
프로그램의 이식성을 위해 C언어의 표준에서는 3가지 Behaviour를 규정함. 그 중에서 Implementation-Defined Behaviour는 여러 동작 중 한가지를 수행할 수 있음.
표준은 1개 이상의 동작 가능성을 제공함(=Unspecified Behaviour). 그런데, 특정 시스템마다 표준을 참조해 어떤 동작을 할 지를 미리 정해서 이를 문서화해 제공해야함.
ㅤ
어떻게 동작할 지 헷갈린다면 문서를 참고하면 되는 Behaviour임.
ㅤ
short, int, long 자료형을 필요로 하며, 위 자료형들은 각각의 특정 범위를 담당할 것.
int의 표현범위는 short 보다 작지 않을 것.
long의 표현범위는 int 보다 작지 않을 것.
// 16bit 시스템에서는 int가 2byte / 32bit 시스템에서는 int가 4byte
char c = 200
// 플랫폼에 따라 char를 signed / unsigned로 바라봄
int x = -1;
unsigned int y = x >> 1;
// 컴파일러의 구현에 따라 다르게 동작할 수 있음.
딥다이브
[C언어] stdint.h 를 통한 타입 작성과 CLANG Header 읽기 개고생
stdint.h 헤더파일을 이용해 타입을 더욱 정확하게 작성하는 방법을 알아보기 위해 헤더파일을 직접 읽어보면서 어떤 타입들이 있고 + 해당 타입을 어떻게 정의하고 있는지 살펴보았다. 다만 그 과정에서 동일한 헤더파일에 대해서 Clang의 기본 헤더파일과 별개로 타겟 플랫폼을 위한 헤더파일이 각각 존재하며, import 과정에서 이를 이용하여 빌드 과정에서 타겟에 따라 정확하게 자료형을 넣어 빌드한다는 것을 배웠다.
개고생
공백문자
ㅤ
320x100
'TIL' 카테고리의 다른 글
| [250901] Day 22 - C언어도 캡슐화가 가능하다고 (0) | 2025.09.01 |
|---|---|
| [250825] Day 15 - 드디어 프로젝트를 시작합니다! (2) | 2025.08.25 |
| [250822] Day 12 - 메모리 동적할당과의 한 판 승부 (0) | 2025.08.24 |
| [250821] Day 11 - C언어는 모든게 포인터인가요 (0) | 2025.08.22 |
| [250820] Day 10 - &&__ ** 별보러가자 (0) | 2025.08.21 |