본문 바로가기

Basic Programming Language/C

C언어 - 선행처리, 변수

선행처리(Preprocess)

- 실행파일을 생성하는 과정에서 source파일내에 존재하는 선행처리지시문을 처리하는 작업

 

- compile하기 전 preprocessor에 의해 먼저 처리 = compiler가 compile하기 전에 source 재구성 역할

 

- #으로 시작 / ;X / 중간에 c언어 code 섞는 거 불가능 / 자기가 위치한 곳 기준부터 끝까지 영향

 

- 선행처리 지시자(preprocessing directives) : #include, #define, #line, #error, #pragma, #undef, #if, #ifdef, #ifndef, #elif, #else, #endif

 

- #include : 외부에 선언된 함수나 상수등을 사용하기 위해서 헤더 파일을 현재 파일에 포함할 때, 사용

 

표시방식 2가지 : " #include<stdio.h> or #include"myStdio.h"

1. <> : C언어 제공 표준 Header File

2. "" : User가 직접 작성한 Header File -> 일종의 기준

 

- #define : 함수나 상수를 단순화해주는 macro정의시 사용 -> code 가독성 증가

표시방식 : #define 이름(식별자) 값(대체리스트) -> 이렇게 치환하는 과정 = macro 확장

 

- 중첩 사용 가능, 빈값(공백) 사용 가능

(ex)#define a 5;


변수(variable)

- data를 저장하기 위해, Program에 의해 이름을 할당받은 Memory Space + 값 변경 가능

 

- Memory Space받으면 Memory Address도 같이 가진다.

 

- type : 정수형(short, int, long), 실수형(float, double), 문자형(char), boolean, pointer, struct

 

- unsigned/signed 정수, 문자형, long double -> 할당되는 memory 크기 & data표현 범위 다르다.

 

- 생성 규칙 : 숫자로 시작X, 이름 사이 공백X, 미리간 정해진 keyword사용X(ex-int), 대소문자 구분(ex - int i랑 int I랑 서로 다른 변수 취급)

 

- 선언 : 자료형 변수이름; / 선언과 동시에 초기화 : 자료형 변수이름 = 값; / 대입 : 변수이름 = 값;

 

- 이렇게 선언도 가능 : 자료형 변수이름1, 변수이름 2; / 자료형 변수이름1=값, 변수이름2 = 값2;(자료형이 같을 때 가능)

 


상수(constant)

- data를 저장하기 위해, Program에 의해 이름을 할당받은 Memory Space + 값 변경 불가능

 

- 표현 방식으로 구분 : Literal, Symbolic

 

- Literal : 정수, 실수, 문자 type 존재 but 저장된 memory space가리키는 이름이 없음

(ex)123(정수형), 1.1(실수형), 'a'(문자형)

 

- Symbolic : memory space가리키는 이름이 있음 / 반드시 선언+초기화 / const or macro이용

 

(ex) const int MAX=10; #define MAX 10;


형변환(type conversion)

 

- 다른 type끼리는 연산이 불가능하므로, 같은 type으로 만드는 작업

 

- 표현범위 小 -> 표현범위 大 (이상X) / 표현범위大 -> 표현범위小 (이상O - data손실 발생)

 

- 방식 2가지 : implicit(자동), explicit(강제)

 

implicit 사용 시 Compiler가 처리하는 기준 : char → short → int → long → float → double → long double

 

explicit - type cast연산자 이용/ (변환하려고 하는 type)

 

 

 

 

'Basic Programming Language > C' 카테고리의 다른 글

C언어 - 포인터, 포인터배열  (0) 2024.04.06
C언어 - 제어문, 함수  (0) 2024.04.05
C언어 - 연산자, 배열  (0) 2024.04.04
C언어 - Input/Output  (1) 2024.04.02