자료형, 선행 처리기

2023. 3. 20. 17:47개발하는중/c

728x90
반응형

자료형과 선행 처리기

1.     상수와 변수

-       자료형

프로그램에서 사용하는 자료의 형태

상수와 변수로 구분

-       프로그램에서 자료(data) 처리를 위해서는 자료의 생성과 저장, 처리 과정이 필요

-       C프로그램은 수많은 명령어와 자료들로 구성 ,이들 자료의 정확한 효율적인 활용이 필요

-       C언어는 여러가지의 종류의 자료형(data type)을 지원하고 있음

 

-       상수

항상 고정된 값을 갖는 자료

값이 한번 정해지면 프로그램 도중 그 값을 변경할 수 없는수

l  정수형 상수

구분 비고
10진 상수 10, -10, 999 0~9까지의 숫자를 사용하며, 0으로 시작 할 수 없다.
8진 상수 011, 055 0~7까지의 숫자를 사용하며, 숫자 앞에 0을 붙임
16진 상수 0xac,0X2A 0~9 A~F를 사용하며 숫자 앞에 0x, 0X를 붙임
Unsigned형 상수 12u, 067u, OXFAU 부호 없는 상수를 표현하며, 숫자 뒤에 u, U를 붙임
Long형 상수 12345l, 0XFFL 큰 길이의 정수를 표현하며, 숫자 귀에 l, L을 붙임

 

l  실수형 상수

부동소주점 형 상수

Double형을 기본 자료형 으로 사용

구분 비고
소수 형식 12.345 소수점을 사용하여 표현
지수 형식 12E3(=12000) 5e-2(=0.05) 10진수와 e(E)를 사용 표현
Float형 상수 3.14f 3.14E-3F 숫자 뒤에 f, F를 붙임
Long double형 상수 3.14l 3.14E-3L 숫자 뒤에 l, L을 붙임

 

l  문자형 상수

단일 인용부호 ('’)로 묶여 있는 1개의 영문자라 숫자문자

내부적으로는 해당문자의 ASCII 코드값이 사용

      예를 들어 ‘A’는 내부적으로 65(ASCII 코드값)가 사용됨

Escape문자 : 키보드에 나타자 있지 않은 문자

 

l  문자열 상수

이중 인용부호 (“ ")로 묶여 있는 복수개의 영문자나 숫자

기억공간에 보관될 때는 문자열 끝에 null문자 (\0) 추가

      Ex) "korea” => korea\0

-       변수

변할 수 있는 값

프로그램에서 변수는 프로그램 실행도중 변할 수 있는 값이 저장되는 기억공간을 의미

Ex) i=10 , i는 변수명이고 10이란 값을 i의 변수에 기억공간에 저장

이러한 변수 속에 들어가는 값은 수시로 변경될 수 있다.

n  변수의 특징

u  모든 변수는 이름이 있다.(변수명)

u  모든 변수는 정해진 자료형이 있다.

u  모든 변수는 할당된 값을 갑는다.

n  변수명의 정의 규칙

u  모든 변수는 사용되기 전에 선언 되어야함

u  변수명은 반드시 영문자나 _로 시작해야함

u  변수명은 중간에 숫자, _로 명명 할 수 있다.

u  변수명은 중간에 _이외에 특수문자($, #, ? )를 섞어서 명명할 수 없다.

u  변수명은 대, 소문자를 구별하여 사용한다.

u  변수명은 예약어들을 사용할 수 없다.

Ex) 변수 사용의 예

 

2.     자료형과 변수 선언

-       변수

n  자료를 저장할 기억공간을 확보하고 이 공간에 이름을 붙여 준 것

-       변수 선언

n  확보된 기억공간에 이름을 부여하는 것

-       이러한 변수 선언을 위해 자료형이 필요

 

-       자료형의 종류

n  기본형

u  정수형(int, short, long, unsigned)

l  운영체제에 따라 표현범위가 다름

 

u  실수형(floar, double, long double)

l  기본형은 double

 

u  문자형(char, unsigned char)

l  ASCII코드를 사용하여 처리

l  -128 ~ 127 까지의 값을 표현

 

u  열거형(enum)

l  숫자 대신 단어를 사용

l  형식 enum태그명 {열거자1, 열거자2, ....|

Ex) enum day {SUN, MON, TUE, WED, THU, FRI, SAT}

u  형없음(void)

n  확장형

u  배열형, 함수형, 포인터형, 구조체형

-       변수 선언

n  변수명과 변수가 가질 자료형을 지정하여 변수를 위한 기억공간을 할당 하는 것

n  형식 == 자료형 변수명;

Ex) 정수 -> int 변수명;

짧은 정수 -> short int 변수명;

긴 정수 -> long int 변수명;

실수 -> double 변수명;

문자 -> char 변수명;

문자열 ->char 변수명[문자수 +1];

n  변수 선언시 고려 사항

u  변수에 저장 될 값의 크기(범위)

l   

u  변수의 선언 위치

l  전역 변수, 지역 변수

u  변수의 초기화

l   

 

3.     선행 처리기

-       선행처리기(preprocessor)

n  컴파일에 앞서 프로그램 선두에 선언된 지시자들을 미리 처리하는 역할을 수행

-       선행처리기의 종류

n   

-       선행처리기를 사용할 때 주의 할 점

n  반드시 #으로 시작해야함

n  명령문 끝에는 세미콜론;을 붙이지 않음

n  한 줄에 하나의 명령만 쓴다

n  소스 프로그램의 첫 부분에 위치

-       #include

n  #includeC언어에서 제공되는 헤더파일(*.h)를 자신의 소스파일에 읽어 들여 함께 컴파일 하고자 할 때 사용

n  C 프로그램에서 표준함수인 printf( ), scanf( ) 등을 사용하려면 이 함수들의 원형(prototype)이 선언되어 있는 표준 입출력 헤더파일인 stdio.h #include시켜야 함

u  형식 : #include <파일명>,#include "파일명"

u  사용 예 : #include <stdio.h> #include "stdio.h", #include "\tc\lib\math.h"

u  기능 : #include 다음에 제시된 파일을 현재 프로그램에 포함시킨다.

l  <파일명>은 표준 디렉토리(보통 include 디렉토리)에서 파일을 찾아 포함

l  "파일명"은 현재 사용 중인 디렉토리나 지정된 디렉토리에서 파일을 찾아 포함하며, 또는 드라이브나 경로를 사용

-       #define

n  #define는 매크로 정의 시 사용

u  매크로(macro)

l  선행 처리기 #define을 사용하여 단순 치환되는 자료

l  프로그램 작성 시에 명령이나 수식 또는 상수 값이 자주 사용될 때 이들을 대표하는 이름을 붙여 사용하는 대상

u  형식: #define 매크로명 자료, #undef 매크로명

u  사용 예: #define PI 3.141592

l  이는 프로그램 내의 PI 3.141592로 치환하라는 것

u  기능 : 프로그램 상에 나오는 매크로명을 지정한 자료로 치환 후 컴파일하거나(#define), 정의를 해제(#undef)한다.

 

n  매크로 함수 정의

u  형식 : #define 매크로명(인수) (수식), #define 매크로명(인수, 인수) (수식)

u  사용 예 : #define AREA(x) (3.141592*(x)*(x)), #define HAP(a, b) (a+b)

u  장점

l  선행처리기에 의한 단순 치환 방식이므로, 전달 인자의 자료형을 명시할 필요가 없고, 또 어떠한 자료형 변수를 인자로 전달해도 잘 동작한다.

l  한 두 줄의 코드인 경우 함수로 정의하는 것보다 속도가 빠르다.

 

-       조건부 컴파일 선행처리기

n  #if #else #elif #endif

u  조건에 따라 프로그램을 컴파일 하는 명령

u  최적의 코드로 프로그램을 작성할 수 있기 때문에 시스템의 성능 향상

n  #if #elif다음에는 컴파일 여부를 결정하는 조건문

u  조건문은 선행처리 과정에서 진위 여부를 판단할 수 있어야함

u  변수 지정이나 함수 호출 불가

u  주로 매크로 값이 사용

728x90

'개발하는중 > c' 카테고리의 다른 글

연산자  (0) 2023.04.03
표준 입출력 함수  (0) 2023.04.03
c언어 개요  (0) 2023.03.17
c언어_연산자의 이해  (0) 2021.05.18
c언어_표준 입력 함수 scanf()의 이해  (0) 2021.02.04