[C 프로그래밍] 자료형과 선행처리기
상수와 변수
자료형
- 프로그램에서 사용하는 자료의 형태
- 상수와 변수로 구분하여 사용
- 상수와 변수로 구분하여 사용
- 프로그램에서 자료 처리를 위해서는 자료의 생성과 저장, 처리과정이 필요
- C 프로그램은 수많은 명령어와 자료들로 구성
- 이들 자료의 정확한 처리와 효율적인 활용이 필요
- 이들 자료의 정확한 처리와 효율적인 활용이 필요
- C 언어는 여러가지 종류의 자료형을 지원
상수
- 항상 고정된 값을 갖는 자료
-
값이 한번 정해지면 프로그램 도중 그 값을 변경할 수 없는 수
- 정수형 상수
- 10진 상수 : 0~9까지의 숫자를 사용하며 0으로 시작할 수 없다
- 8진 상수 : 0~7까지의 숫자를 사용하며 숫자 앞에 0(영)을 붙인다
- 16진 상수 : 0~9과 A부터 F까지의 알파벳을 사용하며 숫자 앞에 0x나 0X를 붙인다
- unsigned형 상수 : 부호 헚는 상수를 표현하며 숫자 뒤에 u나 U를 붙인다
- long형 상수 : 큰 길이의 정수를 표현하며, 숫자 뒤에 I나 L을 붙인다
- 10진 상수 : 0~9까지의 숫자를 사용하며 0으로 시작할 수 없다
- 실수형 상수
- 부동소수점 형 상수
- double형을 기본 자료형으로 사용
- 소수형식 : 소수점을 사용하여 표현
- 지수형식 : 10진수와 e(E)를 사용하여 표현
- 부동소수점 형 상수
- 문자형 상수
- 단일 인용부호(‘‘)로 묶여 있는 1개의 영문자나 숫자문자
- 내부적으로는 해당문자의 ASCII 코드값이 사용 (ex ‘A’==65)
- Escape 문자 : 키보드에 나타나 있지 않은 문자
- 단일 인용부호(‘‘)로 묶여 있는 1개의 영문자나 숫자문자
- 문자열 상수 등
- 이중 인용부호(““)로 묶여 있는 복수개의 영문자나 숫자
- 기억공간에 보관될 때는 문자열 끝에 null문자(
\0
)가 추가
- 이중 인용부호(““)로 묶여 있는 복수개의 영문자나 숫자
변수
- 변할 수 있는 값
- 프로그램에서 변수는 프로그램 실행 도중 변할 수 있는 값이 저장되는 기억공간을 의미
- 예를 들어 i=10;은 i는 변수(명)이고, 10이란 값을 i라는 이름으로 정의된 기억공간에 저장한다는 의미
- 변수 속에 들어가는 값은 수시로 변경될 수 있다
-
변수는 사용 전에 반드시 선언하여 컴파일러가 기억공간에서 일정공간을 확보할 수 있도록 해야 함
- 변수의 특징
- 모든 변수는 이름이 있다 (변수명)
- 모든 변수는 정해진 자료형이 있다
- 모든 변수는 이름이 있다 (변수명)
- 변수명의 정의 규칙
- 변수명은 반드시 영문자나 밑줄(_)로 시작해야 한다
- 변수명은 중간에 숫자, 밑줄(_)을 섞어서 명명할 수 있다
- 변수명은 중간에 밑줄(_) 이외의 특수문자($, #, ?, …)를 섞어서 명명할 수 없다
- 변수명은 대,소문자를 구별하여 사용한다
- 변수명으로 예약어들은 사용할 수 없다
- 변수명은 반드시 영문자나 밑줄(_)로 시작해야 한다
자료형과 변수 선언
- 변수
- 자료를 저장할 기억공간을 확보하고 이 공간에 이름을 붙여준 것
- 자료를 저장할 기억공간을 확보하고 이 공간에 이름을 붙여준 것
- 변수 선언
- 확보된 기억공간에 이름을 부여하는 것
- 확보된 기억공간에 이름을 부여하는 것
- 위와 같은 변수 선언을 위해 자료형이 필요
자료형의 종류
- 기본형
- 정수형 : int, short, long, unsigned
- 실수형 : float, double, long double
- 문자형 : char, insigned char
- 열거형 : enum
- 형 없음 : void
- 정수형 : int, short, long, unsigned
- 확장형
- 배열형
- 함수형
- 포인터형
- 구조체
- 배열형
변수 선언
- 변수명과 변수가 가질 자료형을 지정하여 변수를 위한 기억공간을 할당하는 것
-
형식 :
자료형 변수명;
- 변수 선언 시 고려 사항
- 변수에 저장될 값의 크기 (범위)
- 변수의 선언 위치
- 변수의 초기화
- 변수에 저장될 값의 크기 (범위)
선행 처리기
-
컴파일에 앞서 프로그램 선두에 선언된 지시자들을 미리 처리하는 역할을 수행
-
선행처리기를 사용할 때 주의할 점
- 반드시 #으로 시작해야 한다
- 명령문 끝에는 세미콜론(;)을 붙이지 않는다.
- 한 줄에 하나의 명령만 쓴다
- 소스 프로그램의 첫 부분에 위치한다
- 반드시 #으로 시작해야 한다
선행처리기의 종류
| 선행처리기 | 기능 | |–|–| | #include | 파일 포함 | | #define | 매크로 정의 | | #if #else #elif #endif | 조건부 컴파일 |
#include
- #include는 C언어에서 제공되는 헤더파일(*.h)을 자신의 소스파일에 읽어 들여 함께 컴파일 하고자 할 때 사용
-
C프로그램에서 표준함수인 printf(), scanf() 등을 사용하려면 이 함수들의 원형(prototype)이 선언되어 있는 표준 입출력 헤더파일인 stdio.h를 #include 시켜야 함
- 형식 : #include <파일명>
파일명>- ex) #include
, #include "stdio.h"
- ex) #include
- 기능
- #include 다음에 제시된 파일을 현재 프로그램에 포함시킨다.
-
<파일명>은 표준 디렉토리(보통 include 디렉토리)에서 파일을 찾아 포함
파일명> - “파일명”은 현재 사용 중인 디렉토리나 지정된 디렉토리에서 파일을 찾아 포함하며, 또는 드라이브나 경로를 사용
- #include 다음에 제시된 파일을 현재 프로그램에 포함시킨다.
#define
-
#define는 매크로를 정의할 때 사용
- 매크로(macro)
- 선행처리기 #define을 사용하여 단순 치환되는 자료
- 프로그램 작성 시에 명령이나 수식 또는 상수값이 자주 사용될 때 이들을 대표하는 이름을 붙여 사용하는 대상
- 선행처리기 #define을 사용하여 단순 치환되는 자료
- 매크로 상수 정의
- 형식 : #define 매크로명 자료, #undef 매크로명
- ex) #define PI 3.141592 (프르그램 내 PI는 3.141592로 치환)
- ex) #define PI 3.141592 (프르그램 내 PI는 3.141592로 치환)
- 기능 : 프로그램에 나오는 매크로명을 지정한 자료로 치환한 후 컴파일(#define), 또는 정의를 해제 (#undef)
- 형식 : #define 매크로명 자료, #undef 매크로명
- 매크로 함수 정의
- 형식 : #define 매크로명 (인수) (수식), #define 매크로명 (인수, 인수) (수식)
- ex) #define AREA(x) (3.141592(x)(x)), #define HAP(a, b) (a+b)
- ex) #define AREA(x) (3.141592(x)(x)), #define HAP(a, b) (a+b)
- 장점 : 선행처리기에 의한 단순 치환 방식이므로 전달 인자의 자료형을 명시할 필요가 없고, 또 어떠한 자료형 변수를 인자로 전달해도 잘 동작함. 한 두 줄의 코드인 경우 함수로 정의하는 것보다 속도가 빠름
- 형식 : #define 매크로명 (인수) (수식), #define 매크로명 (인수, 인수) (수식)
#if #else #elif #endif
- 조건부 컴파일
- 조건에 따라 프로그램을 컴파일하는 명령
- 최적의 코드로 프로그램을 작성할 수 있기 때문에 시스템의 성능 향상
- #if와 #elif 다음에는 컴파일 여부를 결정하는 조건문 필요
- 조건문은 선행처리과정에서 진위 여부를 판단할 수 있어야 함
- 변수 지정이나 함수 호출 불가
- 주로 매크로 값 사용
- 조건문은 선행처리과정에서 진위 여부를 판단할 수 있어야 함