기계어(Low-Level Language, Machine Language): 컴퓨터(기계)가 바로 이해할 수 있는 언어
어셈블리어(Assembly Language): 숫자가 아닌 문자이기에 사람에 좀 더 친숙한 언어. 이진 패턴의 특정 부분을 문자로 치환합니다. 그래서 기계어와 어셈블리어는 일대일 대응 관계를 가집니다.
고급 언어(High-Level Language): C언어 혹은 C++, Java, Python과 같은 언어들. 어셈블리어에서 모양은 물론, 양까지 만족스럽게 줄어듭니다. 사람에 가깝다는 의미에서 High-Level Language라고 부릅니다.
소스코드(Source Code): 프로그래머가 고급 언어로 작성한 코드(명령서)를 소스코드라고 합니다.
빌드 프로세스(Build Process): 사람이 읽기 쉬운 고급 언어로 작성된 소스코드(명령서)를 컴퓨터가 읽기 쉬운 기계어로 변환하는 일련의 과정입니다.
컴파일과 빌드
컴파일은 두 가지 의미를 가지고 있습니다.
상황에 따라 적절하게 두 가지 의미 중 하나를 생각하면 됩니다.
1. 확장된 소스코드가 어셈블리 코드로 변환되는 과정.
2. 소스코드부터 오브젝트 코드까지의 과정.
컴파일러
컴파일러도 컴파일과 똑같이 두 가지 의미를 가지고 있습니다.
1. 확장된 소스코드를 어셈블리 코드로 변환해주는 프로그램
2. 소스코드로 실행파일까지 만들어 주는 프로그램.
프로그램의 시작점(Entry Point)
main() 함수는 프로그램의 시작점입니다.
즉, 모든 프로그램에게는 main() 함수가 있어야 합니다.

두 가지 좋은 습관
1. 코드 작성에서 가장 중요한 것은 “시작이 있으면 무조건 끝을 맺어줘야 한다.”입니다.
만약 열었다면 무조건 닫는 문법이 있고, 소유 했다면 다시 돌려주는 문법이 있습니다.
다시 말하지만, 컴퓨터는 사람이 아닙니다. 유추라는 능력이 없습니다.
당연히 컴퓨터는 어디가 시작이고 어디가 끝인지 알 수 없습니다.
2. 들여 쓰기를 생활화 합시다. 들여 쓰기를 처음부터 안하면 끝까지 안하는게 습관처럼 됩니다. 악필이 습관 되는 것입니다.
printf() 함수
print formatted의 약자입니다. “양식에 맞게 출력하다”라는 뜻입니다. 그래서 탈출 문자열 혹은 서식 지정자와 함께 쓰입니다.

탈출 문자열(Escape Sequence)
탈출 문자 ’\’와 함께 작성된 문자열.
C언어에서 문자열은 시작 큰 따옴표와 끝 큰 따옴표로 감싸져 있습니다.
이 문자열 도중에 다른 의미를 가지는 문자열을 넣어서 사용합니다. 즉, 잠시 문자열을 “탈출”합니다.
| 출력 | |
| \n | 개행(New line) |
| \t | 탭(Tap) |
| \’ | 따옴표 출력 |
| \” | 쌍따옴표 출력 |
| \\ | 역슬래시 출력 |
| %% | % 출력 |


서식 지정자(Format Specifier)
printf() 함수 혹은 scanf() 함수와 같은 입출력 함수들과 함께 쓰여서
양식에 맞게 입출력 할 수 있게끔 도와주는 지정자.
문자열의 원하는 위치에 서식 지정자를 넣어서 사용합니다.
서식 지정자의 종류
1. %d: decimal의 약자. 10진수로 대체됩니다.
2. %o: octal의 약자. 8진수로 대체됩니다. ex) 9(10) <-> 11(8)
3. %x: hexadecimal의 약자. x는 소문자, X는 대문자로 대체됩니다. ex) 17(10) <-> 11(16)
4. %u: unsigned의 약자. 양수로 대체됩니다.
5. %c: character의 약자. 문자로 대체됩니다.
6. %s: string의 약자. 문자열로 대체됩니다.
7. %f: floating point의 약자. single precision.
8. %lf: double precision floating point.
서식 지정자는 왜 필요할까요?
3245라는 숫자를 문자열에 편입시키기 위해서 printf(“Result: %d”, 3245)라고 적을 수 있습니다.
또한 서식 지정자를 활용하면 계산 결과도 얻어 낼 수 있습니다.
3245 * 2342의 계산 결과를 화면에 출력시키기 위해 printf(”Result: %d”, 3245 * 2342)라고도 적을 수 있습니다.
즉, 복잡한 수식을 빠른 시간안에 계산하고 그 결과를 원하는 형식으로 보기 위함입니다.
복잡한 소스코드를 작성할 때 디버깅 용도로 요긴하게 사용되기도 합니다.

printf() 함수 코드를 정확하고 쉽게 이해하는 방법
뒤에서부터 해석하면 훨씬 쉬워집니다. 결국 영어로 작성하기에, 어순이 우리나라와 다릅니다.
printf(”%d”, 3245 * 2342); 라는 코드는 “3245 * 2342를 %d 형식으로 printf해라”라고 해석합니다.
후에 배울 scanf()도 동일하게 뒤에서부터 해석하는게 편합니다.


리터럴(Literal)
소스코드에 적힌 값 그 자체를 뜻합니다.
앞으로 저자가 “값”이라고 칭하는 것들은 “리터럴”의 의미를 지닌다고 생각하면 됩니다.

경고가 뜬다.
경고(Warning)는 에러(Error)와 다릅니다.
에러가 뜨면 빌드 실패되지만, 경고는 빌드 시켜줍니다.
다만, 경고도 되도록 모두 잡고 가는 것이 국룰입니다.

자료형의 필요성
컴퓨터는 아주 단순히 말해서, 계산하고 저장하는 기계.
우리가 입력한 모든 값은 결국 0과 1로 저장됩니다.
하지만 컴퓨터는 그 0과 1의 묶음들이 무엇을 의미하는지 전혀 알 수 없습니다.
어디서부터 어디까지(크기)를 어떻게 해석해야하는지 알려줘야합니다.
이 역할을 하는 것이 자료형입니다.
컴퓨터 공학에서의 크기 단위
컴퓨터 공학에서 가장 작은 크기 단위는 1 bit입니다.
이진법의 한 자리에 해당하는 크기입니다.
컴퓨터 상식적으로 8 bits를 1 byte라고 부릅니다.
다시 1024 bytes를 1 mb라고 부릅니다.
자료형(Type)
저장될 데이터의 크기와 해석 방법에 대한 정보.
자료형 크기 == 표현 가능한 수 서식 지정자
| 자료형 | 크기 == 표현 가능한 수 | 서식 지정자 |
| char | 1 byte. -(2^7) ~ (2^7) - 1 [-128 ~ 127] |
%c or %hhd |
| short int | 2 byte. -(2^15) ~ (2^15) - 1 [-32768 ~ 32767] |
%hd |
| int [기본 정수 자료형] | 4 byte. -(2^31) ~ (2^31) - 1 [-2147483648 ~ 2147483647] |
%d or %i |
| long | 4 byte or 8 byte. | %ld |
| long long | 8 byte. -(2^63) ~ (2^63) - 1 | %lld |
| float | 4 byte. 유효 자리수 6~7자리. [부호: 1bit, 지수: 8bit, 가수: 23bit] |
%f |
| double [기본 실수 자료형] |
8 byte. 유효 자리수 15~16자리. [부호: 1bit, 지수: 11bit, 가수: 52bit] |
%lf |
| long double | 8 byte 이상. | %Lf |

'C 언어' 카테고리의 다른 글
| [Unreal Engine 8기] C언어 6일차 (0) | 2026.03.03 |
|---|---|
| [Unreal Engine 8기] C언어 5일차 (0) | 2026.02.27 |
| [Unreal Engine 8기] C언어 4일차 (0) | 2026.02.26 |
| [Unreal Engine 8기] C언어 3일차 (0) | 2026.02.25 |
| [Unreal Engine 8기] C언어 2일차 (0) | 2026.02.24 |