인삿말
안녕하세요 알다브입니다.
오랜만에 글을 쓰게 되네요
너무 오래 됐죠 ㅜㅜ
저번 시간에는 변수에 대해
알아봤는데요.
이번 시간에는 상수에
대해서 알아보는 시간을
갖도록 하겠습니다.
이전 내용을 보고싶으신 분들은
아래 링크로 확인해주세요!
2020.04.22 - [프로그래밍언어/c언어] - C언어 독학 #4. 변수 데이터를 저장하자
상수란
저번 시간에
변수는 값을 임시저장하고
타입만 같으면
다른 데이터도 저장 즉,
다른 값도 넣을 수 있다고
배웠습니다.
상수는 반대 개념입니다.
데이터를 변화시킬 수 있는
변수와는 달리
상수는 변하지 않는 값을
가집니다.
간단한 문장으로
예를 들어 보겠습니다.
int a=4;
a는 정수형변수
라는 것은 다들 알고 계시죠?
여기서 4는 숫자 상수입니다.
이 상수는 프로그램이 실행되고
종료될 때 까지 변하지 않습니다.
리터럴 상수
상수에는 크게 두 가지 종류가 있습니다.
위에서 숫자 상수를 예로 들었는데
숫자 상수와 같이 글자 그대로
의미가 있는 상수를
리터럴(literal) 상수라고 합니다.
리터럴 상수의 종류로는
정수형 상수, 실수형 상수, 문자 상수,
문자열 상수가 있습니다.
여기서
문자 상수는 문자 하나를
의미하는데 컴퓨터에
어떻게 표현 될까요?
쉽게 생각해볼게요
컴퓨터는 이진수로
운영되는데
'a', 't'(작은따옴표로 묶임)
와 같은 문자 상수가
컴퓨터에 어떻게 저장되고
표현되는지 의문이
생기지 않나요?
바로 이러한 문자들을
포함해 128개의 문자를
표현할 수 있도록
ASCII 코드가 쓰입니다.
ASCII 코드란
American Standard Code
for Information Interchange
의 약자로 쉽게 말해
호환하기 위한 표준 코드 체계
로 보면 될 것 같습니다.
따라서 각각의 문자는
ASCII 코드에 매칭된
이진수로 컴퓨터는 인식하게 됩니다.
한 번 직접 확인해보도록 해요!
#include<stdio.h>
int main(){
printf("문자 상수 : %c %c %c\n", 'a', 't', '1');
return 0;
}
문자 상수 'a', 't', '1'을%c 포맷으로 한 줄에출력하라는 의미입니다.
실행하시면 위와 같은
결과를 얻을 거예요
#include<stdio.h>
int main() {
printf("문자 상수 : %c %c %c\n", 'a', 't', '1');
printf("각각의 ASCII 코드 : %d %d %d\n", 'a', 't', '1');
return 0;
}
이번엔 이 문자 상수를 %c
포맷이 아닌
실제 컴퓨터에 표현되는 값을
알고자 %d 포맷으로
출력해보도록 하겠습니다.
%d 포맷으로 출력하면
위와 같이 각각 문자의
ASCII 코드를 알 수 있습니다.
그리고 문자열 상수는
여러 문자로 구성된 것을 말합니다.
(큰 따옴표로 묶임)
#include<stdio.h>
int main() {
printf("안녕하세요 %s\n", "알다브입니다.");
return 0;
}
위와 같이 "알다브입니다."
라는 문자열 상수를
%s포맷으로 출력하면
위와 같은 결과를 얻을 수 있습니다.
또 문자열 상수의 끝에는
끝을 알리는 종료 문자 \0
을 자동으로 추가하게 됩니다.
이것을 NULL 문자라고 합니다.
심볼릭 상수
심볼릭(Symbolic) 상수는 리터럴 상수의
반대 개념으로
상수를 기호화하여 의미 있는 이름으로
지어서 쓰는 상수를 말합니다.
두 가지로 심볼릭 상수를
정의할 수 있습니다.
const 키워드
#include<stdio.h>
int main(){
const double PI = 3.14;
return 0;
}
const 키워드를 사용해서
PI 라는 상수를 정의한 것 입니다.
상수의 이름은
대문자로 정의하는 것이
좋습니다.
PI는 상수로 정의되었기 때문에
값을 변경하려 하면 에러가 발생합니다.
이와 같은 문법으로 인해
상수를 정의할 때에는
선언과 동시에 초기화를
동시에 해줘야 합니다!
이와 같이 에러가 나게 됩니다.ㅜㅜ
#define
#include<stdio.h>
#define PI 3.14
int main(){
printf("%f\n", PI);
return 0;
}
#define은
#를 써 전처리기에서 PI를
3.14로 정의하는 것을 의미합니다.
const 키워드로 정의한 것 처럼
프로그램내에서 PI는 상수로
쓰이게 됩니다.
결과입니다.
심볼릭 상수의 장점
수식
예를 들어 원의 둘레나 원의 넓이
같은 것을 구할 때
3.14값을 직접곱하는 것 보다는
pi의 의미를 갖고 있는
상수로 정의하여 쓰는 것이
수식에 있어 사용하기
편하게 느껴질 수 있습니다.
2 * 3.14 * r(반지름)
2 * PI * r
수정
심볼릭 상수를 쓰지 않고
만약 3.14라는 리터럴 상수를
쓴다고 가정해봅시다.
프로그램 내에서 이 상수가
수백번이 쓰이고
이 상수를 3.14에서 다른
숫자로 변경한다고 하면
(실제로 PI가 변하진 않죠..ㅋㅋㅋ)
수정을 똑같이 수백번을 해줘야 될 것 입니다..
하지만 심볼릭 상수로 미리 정의를
하고 심볼릭 상수 초기화만 해주면
끝납니다.
마무리
이렇게 상수에 대해 알아봤는데요.
어떤가요 이해가 잘 되시나요?
이해가 되지 않는 부분이나
궁금한 게 있으신 분은 댓글을
달아주세요!
오늘도 좋은 하루 보내세요~
'프로그래밍언어 > c언어' 카테고리의 다른 글
C언어 독학 #7. 비트 체계와 비트 연산자 (0) | 2020.07.17 |
---|---|
C언어 독학 #6. 연산자 (0) | 2020.05.13 |
C언어 독학 #4. 변수 데이터를 저장하자 (6) | 2020.04.22 |
C언어 독학 #3. printf(), scanf() 데이터 출력과 입력 (4) | 2020.04.21 |
C언어 독학 #2. 구조 및 Visual studio로 프로그램 실행 (6) | 2020.04.20 |