2.2.2 변수 선언
> 변수명과 변수가 가질 자료형을 지정하여 변수를 위한 기억 공간을 할달하는 것
변수 선언 시 고려 사항
- 변수에 저장될 값의 크기 (범위 )
//2-7.c 변숫값의 범위를 벗어난 예
#include <stdio.h>
void main(){short int num1, num2;
num1 = 32767+1;
//short int형의 범위를 벗어남
num2 = -32768-1;
//(short int형의 범위 : -32768~32767 )
printf("num1 = %d \n", num1);
printf("num2 = %d \n", num2);
}
//2-8.c 변숫값의 범위를 벗어난 예
#include <stdio.h>
void main(){
int num1, num2;
num1 = 32767+1;
num2 = -32768-1;
printf("num1 = %d \n", num1);
printf("num2 = %d \n", num2);
}
- 변수의 선언 위치
변수가 통용되는 범위를 결정하므로 매우 중요하며, 함수의 외부와 내부에 선언할 수 있다.
함수의 외부에서 선언된 변수는 프로그램 어디에서나 쓸 수 있는 전역변수를 의미하며,
- 전역변수는 프로그램이 실행되는 동안에 항상 존재하는 자료영역에 저장
함수의 내부에서 선언된 변수는 선언된 함수의 내부에서만 인식되며 이는 지역변수를 의미
- 지역변수는 임시 기억공간인 스택 영역에 저장
//2-9.c
//변수를 함수 외부와 내부에서 선언한 예
#include <stdio.h>
int a = 100; // 전역변수 a
void func(){
int a= 200;
printf("func()에서 a의 값 -> %d \n", a);
// func()의 지역변수 a출력
}
int main(){
printf("main()에서 a의 값 -> %d \n", a);
// 전역변수 출력
func();
}
- 변수의 초기화
모든변수는 변수 선언이 이루어지면 선언된 변수에 특정 값을 부여해야 하며, 이를 초기화라고하낟.
2.3 선행처리기
2.3.1 선행처리기
컴파일 명령을 내렸을 때 컴파일에 앞서 프로그램 선두에 선언된 지시자들을 미리 처리하는 역할 수행
*선행처리기를 사용할 떄 주의할 점
- 반드시 #로 시작해야 한다.
- 명령문 끝에는 세미콜론 ; 을 붙이지 않는다.
- 한 줄에 하나의 명령만 쓴다.
- 소스 프로그램의 첫 부분에 위치
2.3.2 파일포함
#include
> C 언어에서 제공되는 헤더파일 (*.h )를 자신의 소스파일에 읽어 들여 함께 컴파일 하고자 할 때 사용
c프로그램에서 표준함수인 printf(), scanf() 등을 사용하려면
- 이함수들의 원형(prototype)이 선언되어 있는 표준 입출력 헤더파일인 stdio.h 를 #include 시켜야함
2.3.3 매크로 정의
#define
> 매크로를 정의할 떄 사용
매크로 (macro)
- 선행처리기 #define 을 사용하여 단순 치환되는 자료
- 프로그램 작성 시에 명령이나 수식 또는 상수값이 자주 사용 될 때 이들을 대표하는 이름을 붙여 사용하는 대상
//2-12 매크로사용 예
#include <stdio.h>
#define ADDR "asdfgg"
#define TEL "1234-56789"
void main(){
printf("주소 : %s \n", ADDR);
printf("전화 : %s \n", TEL);
}
2.3.4 조건부 컴파일
>조건에 따라 프로그램을 컴파일하는 명령
> 최적의 코드로 프로그램을 작성할 수 있기 때문에 시스템의 성능 향상
<> #if 와 #elif 다음에는 컴파일 여부를 결정하는 조건문 필요
- 조건문은 선행처리과정에서 진위 여부를 판단할 수 있어야 함
- 변수 지정이나 함수 호출 불가
- 주로 매크로 값이 사용
2020/05/12 - [방송통신대학/알고리즘] - 제2장 자료형과 선행처리기(자료형)
'방송통신대학 > 알고리즘' 카테고리의 다른 글
제 13강 근사 알고리즘(NP - 완전 문제와 NP-하드 문제, NP - 완전 문제의 종류 ) (0) | 2020.05.15 |
---|---|
제 13강 근사 알고리즘(튜링기계,다항시간,클래스P,클래스NP) (0) | 2020.05.14 |
제2장 자료형과 선행처리기(자료형) (0) | 2020.05.12 |
12강 제 6장 탐색 알고리즘 ( 해 싱 ) (0) | 2020.05.09 |
12강 제 6장 탐색 알고리즘 (흑적트리, B 트리 ) (0) | 2020.05.08 |