출처 : SMILE HAN
전처리기는 컴파일 하기 전에 일어나는 일이다.
📌 대문자 A 출력 방법 (C언어)
- "A"
→ printf("A"); - 'A' (문자)
→ printf("%c", 'A'); - 아스키코드 65
→ printf("%c", 65); - 문자 연산
→ printf("%c", 'A'+0); - 변수 사용
→ char ch='A'; printf("%c", ch);
📌 C언어 전처리기 특징
- 컴파일 전에 실행됨
→ 프로그램이 컴파일되기 전에 먼저 처리됨 - #으로 시작함
→ #include, #define 같은 명령어 사용 - 헤더파일 포함 가능
→ #include <stdio.h> 처럼 다른 파일 불러옴 - 매크로 정의 가능
→ #define PI 3.14 처럼 상수나 코드 정의 - 조건부 컴파일 가능
→ #ifdef, #ifndef 등을 사용해 특정 조건에서만 컴파일
👉 한 줄 정리:
전처리기는 컴파일 전에 # 명령으로 코드 수정·추가를 처리하는 기능.


📌 #include <stdio.h> 쓰는 이유
→ 입출력 함수 사용하려고 넣는 것
📌 핵심 설명
- stdio.h = 표준 입출력 헤더파일
- printf, scanf 같은 함수가 여기 들어있음
- 이걸 안 쓰면 컴파일 에러 발생
📌 한 줄 정리
👉 printf, scanf 쓰려면 꼭 필요한 파일

#include <stdio.h>
int main(void)
{
printf("__LINE__ : %d\n",__LINE__);
printf("__DATE__ : %s\n",__DATE__);
printf("__LINE__ : %d\n",__LINE__);
printf("__TIME__ : %s\n",__TIME__);
printf("__TIMESTAMP__ : %s\n",__TIMESTAMP__);
printf("__FILE__ : %s\n",__FILE__);
return 0;
}
📌 이 코드 설명
👉 이 프로그램은 전처리 매크로를 이용해서 컴파일 시점의 정보들을 출력하는 코드다.
- 프로그램이 실행되기 전에 전처리기가
__LINE__, __DATE__, __TIME__ 같은 값들을 실제 값으로 바꿔줌 - 그래서 실행하면 줄 번호, 날짜, 시간, 파일 정보 등이 출력됨
📌 핵심 포인트
- 전부 자동으로 값이 들어가는 매크로
- 실행 중이 아니라 컴파일할 때 결정됨
- 디버깅할 때 자주 사용됨
📌 한 줄 정리
👉 컴파일 시점 정보를 자동으로 출력하는 전처리기 매크로 예제
#include <stdio.h> // printf, scanf 사용을 위한 헤더파일 포함
int main(void) // 프로그램 시작 함수
{
char name[20]; // 이름을 저장할 문자열 배열 (최대 19글자 + \0)
int kor, eng, mat, sci, total; // 국어, 영어, 수학, 과학 점수와 총점 변수
double avg; // 평균을 저장할 실수형 변수
printf("총점과 평균을 구하는 프로그램입니다.\n"); // 안내 문구 출력
printf("이름을 입력하세요="); // 이름 입력 안내
scanf("%s", name); // 이름 입력받기 (문자열)
printf("국어 점수="); // 국어 점수 입력 안내
scanf("%d", &kor); // 국어 점수 입력
printf("영어 점수="); // 영어 점수 입력 안내
scanf("%d", &eng); // 영어 점수 입력
printf("수학 점수="); // 수학 점수 입력 안내
scanf("%d", &mat); // 수학 점수 입력
printf("과학 점수="); // 과학 점수 입력 안내
scanf("%d", &sci); // 과학 점수 입력
total = kor + eng + mat + sci; // 네 과목 점수를 모두 더해 총점 계산
avg = total / 4.0; // 총점을 4.0으로 나눠 평균 계산 (실수 계산)
printf("%s님의 총점은 %d이고, 평균은 %.2lf입니다.\n", name, total, avg); // 결과 출력 (이름, 총점, 평균)
return 0; // 프로그램 정상 종료
}
📌 C언어 연산자 정리표
| 산술 연산자 | + - * / % | 사칙연산 | a + b |
| 증감 연산자 | ++ -- | 1 증가 / 감소 | a++ |
| 대입 연산자 | = += -= *= /= %= | 값 저장 및 계산 후 저장 | a += 5 |
| 관계 연산자 | == != > < >= <= | 값 비교 (참/거짓) | a > b |
| 논리 연산자 | `&& | !` | |
| 비트 연산자 | `& | ^ ~ << >>` | 비트 단위 연산 |
| 조건 연산자 | ? : | 조건에 따른 값 선택 | a>b ? a : b |
| sizeof 연산자 | sizeof | 자료형 크기 반환 | sizeof(int) |
| 형변환 연산자 | (type) | 자료형 변환 | (double)a |
📌 한 줄 정리
👉 연산자는 계산, 비교, 논리 판단 등 프로그램의 핵심 기능 담당



📌 에스터리스크(*)란?
👉 키보드의 * 이 기호를 말함
📌 C언어에서 의미
곱하기 연산자, 포인터 표시, 간접 참조
📌 한 줄 정리
👉 *는 상황에 따라 곱하기 또는 포인터 의미로 쓰이는 기호
