ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C 언어 기초 정리 02] 변수&상수, 타입, 선행처리문
    개발 이야기/C 2023. 9. 22. 00:09

    타입 

    C언어는 여러 형태의 타입을 미리 작성하여 제공하고 있는데, 크게 정수형, 실수형, 그리고 문자형 타입으로 나눌 수 있다. 

    타입 할당되는 메모리 크기 예시(코드)
    정수형
    short 2byte short a = 10 
    int 4byte int a = 10
    long 4byted int a = 1000
    실수형
    float 4byte float a = 1.12(6자리)
    double 8byte double a =  1.244(15자리)
    char 1byte char a = 'a'

    typecast를 통해서 명시적으로 타입변환이 가능하다. 

    변수(Variable)

    변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미한다.

    변수는 기본적으로 메모리의 주소(address)를 기억하는 역할을 한다. 해당하는 메모리의 주소를 찾아가서 해당 주소에 저장된 데이터를 참조하게 된다. 

    메모리 공간

    하나의 메모리공간에는 8개의 비트로 이루어진 1byte의 데이터가 저장된다. 

    변수 선언은 아래의 두가지 방식이 있다. 

    1. 변수의 선언만 하는 방법

    2. 변수의 선언과 동시에 초기화하는 방법

    추가로 c에서는 변수를 사용하기 전에 반드시 먼저 해당 변수를 저장하기 위한 메모리 공간을 할당해야한다. 

    //변수를 선언 후 초기화
    int num;
    num = 20;
    //변수 선언과 동시에 초기화
    int num01, num02;
    double num03 = 1.23, num04 = 4.56;

    상수(constant)

    심볼릭 상수에 관해서만 작성하면 아래와 같다. 

    상수 서언시 const 키워드나 선행처리기로 선언가능하다. 

    const int MAX = 10; // const 키워드를 이용한 심볼릭 상수
    #define MAX 10;     // #define 선행처리 지시자를 이용한 매크로 심볼릭 상수

     

    선행처리(preporcess)

    선행처리란 실행 파일을 생성하는 과정에서 소스 파일 내에 존재하는 선행처리 지시문을 처리하는 작업을 의미하고

    이러한 선행처리 작업은 컴파일하기 전 선행처리기(preprocessor)에 의해 먼저 처리된다. 

     

    특징

    1. 선행처리문은 선행처리 문자(#)로 시작한다

    2. 선행처리문은 코드 내에서 하나의 라인을 모두 차지하며, 선행처리문 뒤에 C언어 코드를 추가하여 같이 사용할 수 없음

    3. 선행처리문은 다른 C언어의 명령문과는 달리 맨 뒤에 세미콜론(;)을 붙이지 않음

    4. 선행처리문은 소스 파일 어디에나 위치할 수 있지만, 선행처리문이 위치한 곳에서부터 파일의 끝까지만 영향을 미친다.

     

    선행처리지시자

    선행처리 지시자 설명 예시코드
    #include 외부에 선언된 함수나 상수 등을 사용하기 위해 헤더 파일을 현재파일에 포함 1. #include <stdio.h>
    2. #include "myStdio.h"
    #define
    함수나 상수를 단순화해주는 매크로를 정의할 때 사용함. #define 함수나 상수
    #undef #define 지시자로 정의된 매크로 삭제 #undef Pi
    #line __LINE__매크로, __FILE__ 매크로 재 정의시   
    #error 지정한 오류메세지 출력, 컴파일 중단  
    #pragma 프로그램 이식성을 위한 것  
    #if #ifdef $ifndef #elif #else #endif 조건부 컴파일 지시자  

    실수와 부동소수점

    1. 고정소수점(fixed point)

    int와 동일한 방식으로 연산이 이루어지는 방식. 

    소수부와 정수부를 나누는 point가 고정되어있다

    정수부와 소수부의 자릿수가 크지 않으므로, 표현할 수 있는 범위가 매우 적다는 단점이 있지만, 계산속도는 빠르다. 대다수의 임베디드 시스템에서 체택하고 있다(부동소수점의 경우 FPU라는 별개의 하드웨어 연산장치 필요)

    2. 부동소수점(floating point)

    부동 소수점 방식은  실수를 가수부와 지수부로 나누어 표현하는 방식이다. 

    ±(1.가수부)×2^(지수부-127)

     

Designed by Tistory.