상수란 변하지 않는 숫자, 혹은 고정된 값을 의미합니다.

C언어에는 두 가지의 상수가 존재합니다.

1) 리터럴(literal) 상수 : 이름이 없는 상수

2) 심볼릭(symbolic) 상수 : 이름이 있는 상수


1. 리터럴 상수


literal의 사전적 의미는 1) 글자 그대로의 2) 문자의 입니다.

char add = 3+5;

add라는 변수를 정의하고 3+5의 결과값을 대입합니다. 3+5는 CPU에서 연산이 되고 결과값 8이 add에 저장돼야 합니다. 하지만 일단 연산을 하기위해서는 RAM에 3과 5를 불러와야합니다. 하지만 3과 5는 메모리에 로드될 때, 이름이 붙지 않습니다. 우리가 인위적으로 변수명을 지정하고 값을 대입한 것이 아니기 때문입니다. 그래서 리터럴상수라고 부르는 것입니다. 말 그대로 리터럴 상수는 메모리에 담기는 데이터 그 자체입니다. 정수, 실수, 문자, 문자열 모두 리터럴상수입니다.



리터럴 상수는 어떤 자료형으로 메모리에 저장될까요?

정수는 기본적으로 int형, 실수는 double형으로 저장합니다. int, double로 표현되는 범위를 넘어선다면 더 큰 자료형으로 저장됩니다.

상수의 자료형을 직접 정해 줄 수도 있습니다. 숫자의 뒤에 접미사를 붙이면 됩니다. ex) 10U, 100F, 391L …

|자료형|접미사|
|unsigned int|U/u|
|long|L/l|
|unsigned long|UL/ul|
|long long|LL/ll|
|unsigned long long|ULL/ull|
|float|F/f|
long double|L/l|


2. 심볼릭 상수


심볼릭 상수는 const를 사용해 선언한 상수입니다. 심볼릭 상수는 한 번 정의하면 값의 변경이 불가능합니다.

#include <stdio.h>

int main(void)
{
    const double PI = 3.141592;
    PI = 10;

    return 0;
}


일반적인 변수를 선언할 때와 다르게 const를 붙입니다. 그리고 상수는 대문자로 표현하는 것이 관례입니다.

no20name

상수 PI의 값을 바꾸려 했기 때문에 오류가 난 것입니다.

가령 계산기 프로그램에서 원주율 PI 같은 고정된 값을 정의할 때 심볼릭 상수를 사용합니다.

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

(C언어) 9 - 2진수와 16진수  (0) 2020.05.14
(C언어) 8 -자료형(3) - 형 변환  (0) 2020.05.14
(C언어) 6 - 자료형 (1) - 숫자, 문자  (0) 2020.05.14
(C언어) 5 - printf 함수  (0) 2020.05.14
(C언어) 4 - 변수  (0) 2020.05.14

+ Recent posts