Peter Ahn
Peter의 우아한 프로그래밍
Peter Ahn
전체 방문자
오늘
어제
  • 전체 (115)
    • 영어공부 (15)
    • 물생활 (9)
    • 독서 (2)
    • 일상 (1)
    • IT 소식 (15)
      • 최신 기술 소식 (10)
      • 보안 소식 (5)
    • 인공지능 (AI) (2)
    • OS (19)
      • Linux (19)
    • Web (0)
      • Vue.js (0)
    • 객체지향 (1)
      • 개념과 원리 (1)
      • 디자인패턴 (0)
    • 프로그래밍 (37)
      • C (14)
      • C++ (3)
      • C# (1)
      • Python (3)
      • Javascript (2)
      • Bash (4)
      • Vim (9)
    • Database (3)
      • DB2 (3)
      • MongoDB (0)
    • 프레임워크 (1)
      • Ionic (1)
    • Cloud (1)
      • AWS (1)
    • 3D Printer (2)
    • 기록보관소 (5)
    • 초대장 (2)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

  • 프로그래밍의 세계에 오신 것을 환영합니다.

인기 글

태그

  • 생활영어
  • typescript
  • vim 강좌
  • 4차 산업혁명
  • 어항
  • bash
  • call by reference
  • 구피어항
  • 리눅스 명령어
  • 하프블랙구피
  • c강좌
  • 영어표현
  • Linux
  • vim
  • 인공지능
  • 영어 회화
  • 딥러닝
  • 쉘 프로그래밍
  • 랜섬웨어
  • C++
  • C언어 강좌
  • C언어
  • 구피
  • 물생활
  • bash shell
  • AI
  • vim 비주얼모드
  • 영어 표현
  • 프로그래밍
  • 리눅스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Peter Ahn

Peter의 우아한 프로그래밍

[C언어 강좌-5] 상수 (Constant)
프로그래밍/C

[C언어 강좌-5] 상수 (Constant)

2017. 1. 26. 13:43
반응형



안녕하세요 피터입니다.

오늘은 C언어의 상수에 대해서 알아보겠습니다.


1. 상수란 무엇인가?

상수(Constant)란 프로그램이 실행되는 동안 '값이 고정되어 변경할 수 없는 메모리 공간'을 의미합니다. 

변수처럼 정의해서 사용할 수 있습니다. 

기본적으로 int나 char 와 같은 C언어 표준 자료형들은 모두 상수가 될 수 있습니다. 그렇기 때문에 상수는 한번 정의한 이후에 값을 변경할 수 없도록 제한한 변수와 의미가 같다고 볼 수 있습니다. 

문자열 그 자체가 값을 나타내는 것을 리터럴 상수(Literal constant)라고 하는데 줄여서 리터럴(Literal)이라고 부르기도 합니다. 


2. 상수를 정의하는 방법

상수를 정의하는 방법에는 두 가지 방법이 있습니다.

#define 전처리기를 사용하는 방법과 const 키워드를 사용하는 방법입니다.


2.1 #define 전처리기 (Preprocessor)

#define identifier value


#define으로 전처리기 지시자를 통해 상수를 정의할 수 있습니다. 

이렇게 정의된 상수는 전처리 단계에서 value로 치환된 이후 컴파일됩니다. 

#include <stdio.h>

#define LENGTH 10   
#define WIDTH  5
#define NEWLINE '\n'

int main() {

   int area;  
  
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}

2.2 const 키워드 (Prefix)

const 키워드를 통해 변수를 선언할 때 상수로 지정할 수 있습니다.

const type variable = value;
이렇게 선언된 변수는 값을 변경할 수 없습니다.

실제로 참조할 때는 #define 사용할 때와 차이가 없습니다.


#include <stdio.h>

int main() {

   const int  LENGTH = 10;
   const int  WIDTH = 5;
   const char NEWLINE = '\n';
   int area;  
   
   area = LENGTH * WIDTH;
   printf("value of area : %d", area);
   printf("%c", NEWLINE);

   return 0;
}

3. 리터럴 상수

리터럴 상수는 소스 코드상의 문자열이 그 자체로 값을 나타내는 것을 말합니다. 이 값들은 변수에 대입을 하거나 조건문에 비교값으로 사용할 수 있습니다.

3.1 정수 리터럴 (Integer Literal)

정수 리터럴은 prefix를 이용하여 10진수, 16진수, 8진수 등의 상수를  표현할 수 있습니다.
0x 로 시작하는 정수 리터럴은 16진수를 나타내며, 0 으로 시작하는 정수 리터럴은 8진수입니다.

sufix로 L이나 U를 사용할 수 있습니다.
L은 long, U는 unsigned 를 나타냅니다.

85         /* decimal */

0213       /* octal */

0x4b       /* hexadecimal */

30         /* int */

30u        /* unsigned int */

30l        /* long */

30ul       /* unsigned long */


212         /* Legal */

215u        /* Legal */

0xFeeL      /* Legal */

078         /* Illegal: 8 is not an octal digit */

032UU       /* Illegal: cannot repeat a suffix */


3.2 실수 리터럴 (Floating-point Literal)

3.14159       /* Legal */

314159E-5L    /* Legal */

510E          /* Illegal: incomplete exponent */

210f          /* Illegal: no decimal or exponent */

.e55          /* Illegal: missing integer or fraction */


3.3 문자 상수 (Character Constant)

' ' 로 감싸여진 단일문자를 문자 상수라고 합니다. ' ' 안에는 단일 문자만 올 수 있습니다. 문자가 2개 이상이면 문자열이 되기 때문에 " " 로 감싸야 합니다.

escape 문자인 '\' 가 붙은 특수 문자도 올 수 있습니다. 

주로 사용하는 '\t' 는 탭문자, '\n' 은 개행문자에 해당합니다.

'x'             /* Legal */

'\n'            /* Legal */

'\t'            /* Legal */


'xy'         /* Illegal: string */


3.4 문자열 리터럴 (String Literal)

" " 로 감싸여진 구문을 문자열 리터럴이라고 합니다. 
하나의 문자열이 너무 긴 경우 아래와 같이 escape 문자인 \ 를 사용해서 여러 행에 걸쳐 작성할 수 있습니다. 
(개행문자를 \ 를 통해 무시하게 되는 원리입니다)
또한 " " 로 감싸여진 문자열을 여러개를 나열하면 하나의 문자열로 인식합니다.
 

"hello, dear"


"hello, \

dear"


"hello, " "d" "ear"



여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

-Peter의 우아한 프로그래밍

반응형
저작자표시 비영리 동일조건 (새창열림)

'프로그래밍 > C' 카테고리의 다른 글

[C언어 강좌-7] 연산자 (Operator)  (0) 2017.02.27
[C언어 강좌-6] 기억 영역 분류 (Storage Class: auto, register, static, extern)  (1) 2017.02.25
[C언어 강좌-4] 자료형 (DataType)  (0) 2016.12.06
[C언어 강좌-3] 변수(Variable)의 이해  (0) 2016.12.02
[C언어 강좌-2] C언어 컴파일 과정  (15) 2016.11.21
    '프로그래밍/C' 카테고리의 다른 글
    • [C언어 강좌-7] 연산자 (Operator)
    • [C언어 강좌-6] 기억 영역 분류 (Storage Class: auto, register, static, extern)
    • [C언어 강좌-4] 자료형 (DataType)
    • [C언어 강좌-3] 변수(Variable)의 이해
    Peter Ahn
    Peter Ahn
    IT 정보 공유, 프로그래밍 지식 공유

    티스토리툴바