Search

[C 프로그래밍] 자료형과 선행처리기

제목
Tag
작성일

자료형 (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
복사
→ 코드 내 PI3.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