Table
자료형 (Data Type)
•
자료형은 값의 표현 방법을 정의한 것
◦
메모리 공간 크기
◦
표현 가능한 값의 범위
◦
가능한 연산
•
값 처리시 자료형을 엄격하게 구분
•
필요한 경우 형 변환(type casting) 을 통해 올바른 연산 수행
C 언어 자료형 종류
•
기본형 (primitive types)
◦
정수형: short int, int, long int, long long int (signed/unsigned)
◦
문자형: char (signed/unsigned)
◦
실수형: float, double, long double
•
열거형 (enumerated type): enum
•
파생형 (derived types): 배열, 구조체, 공용체, 포인터
기본 자료형 크기와 값의 범위
정수형 (signed)
정수형 (unsigned)
실수형 (IEEE 754 기준)
열거형 (Enum)
•
나열된 단어를 값으로 사용하는 자료형
•
여러 개의 상수를 나열해 이름을 붙이는 자료형
•
기본적으로 0부터 시작하여 순차 증가
•
특정 값 지정 가능
enum day {SUN, MON, TUE, WED, THU, FRI, SAT}; // 0~6
enum fruit {APPLE, PEAR, MANGO=4, GRAPE}; // 0,1,4,5
C
복사
상수 (constant)
•
항상 고정된 값을 갖는 자료
•
정수형 상수 : 10진수, 8진수, 16진수로 표현
•
실수형 상수 (double형 기본)
•
문자형 상수
◦
특수한 문자 표현: escape 문자 ‘\’ 이용해 표현
•
문자열 상수
◦
큰따옴표로 묶여있는 일련의 문자
◦
문자열의 끝을 나타내기 위한 널 문자(’\0’) 추가
변수 (Variable)
•
프로그램에서 값을 저장하는 기억 공간
•
실행 중 값 변경 가능
•
변수는 이름, 자료형, 값을 반드시 가져야 함
변수 선언
// 자료형 변수명;
int a;
double b;
C
복사
변수 선언시 고려할 사항
1.
저장할 값의 크기 → 오버플로/언더플로 문제 가능
2.
선언 위치
•
전역 변수: 함수 밖에서 선언 → 프로그램 전체에서 사용
•
지역 변수: 함수 안에서 선언 → 블록 내부에서만 사용
•
같은 이름이어도 영역이 다르면 별개 변수
3.
초기화
•
반드시 초기값을 넣어야 예측 불가 오류 방지
선행처리기 (Preprocessor)
•
컴파일 전에 소스를 전처리(preprocessing)하는 단계
•
# 으로 시작하는 선행처리 지시어 사용
◦
한 줄에 하나씩 작성
◦
끝에 ; 없음
주요 지시어
•
헤더파일 포함: #include
◦
< > : 표준 디렉토리에서 검색
◦
" " : 현재 디렉토리/지정 경로에서 검색
•
매크로 정의/해제: #define, #undef
•
조건부 컴파일: #if, #else, #elif, #endif
매크로 (Macro)
•
특정 코드패턴으로 치환되도록 정의된 명칭
•
#define 사용해 자주 사용되는 명령이나 수식이나 상수에 매크로 이름 붙여 사용
매크로 상수
// #define 매크로명 값
#define PI 3.141592
C
복사
→ 코드 내 PI를 3.141592로 치환
매크로 함수
// #define 매크로명 수식
#define C_AREA(x) (3.141592 * (x) * (x))
C
복사
→ C_AREA(r) 호출 시 3.141592 * r * r 로 치환됨
조건부 컴파일
•
조건에 따라 컴파일할 코드 포함 여부 결정
#if 조건문
printf("문장1\n");
#else
printf("문장2\n");
#endif
C
복사
→ 조건문이 참인경우 문장1, 거짓인 경우 문장2가 컴파일될 소스코드에 포함
#include <stdio.h>
#define DEBUG_MODE 1
int main() {
int a = 10, b = 20;
#if DEBUG_MODE
printf("평균을 구할 값: %d, %d\n", a, b);
#endif
printf("평균 = %f\n", (a + b)/2.0);
}
C
복사
•
디버그 모드일 경우
◦
평균을 구할값: 10, 20
◦
평균 = 15.000000
•
아닐 경우
◦
평균 = 15.000000






