티스토리 뷰
안녕하세요, IT디자이너 입니다.
이번에는 C언어의 상수에 관련하여 포스팅하도록 하겠습니다.
C언어에서 변수, 변수의 데이터타입 등 변수에 관해서 여라가지 키워드를 보셨을 겁니다. 하지만 그의 반대되는 "상수"라는 개념도 있겠죠?
이번에도 하나씩 파헤쳐보도록 하겠습니다. !
1. 리터럴(Literal) 상수
리터럴 상수는 이름없는 상수 입니다. 여러분이 생각지도 않게 여러번 쓰셨을 겁니다.
int num1 = 10;
int num2 = 10 + 30;
위 코드를 보시게되면은 "10"이라는 숫자를 대입하거나 "10+30"으로 연산하여 대입하는 경우가 있을 겁니다.
네, 바로 대입연산자의 우측에 있는 숫자들이 "리터럴(Literal) 상수" 입니다. 우리가 변수를 초기화할 때 사용하는 숫자들은 CPU에서 어떻게 처리하는지 그림으로 설명드리도록 하겠습니다.
위 사진을 보시게되면은 먼저 입력한 10과 30을 메모리에 저장하여 그것을 CPU를 통해 연산 후 num2 변수에 대입을 하고있습니다.
그러면 "리터럴(Literal) 상수"는 컴퓨터가 어떻게 어떤 데이터 타입으로 저장할까요?
위 사진을 보시게되면은 일반적으로 정수는 "int" 실수는 "double"형 데이터 타입에 초기화가 됩니다. 하지만,
int형으로 표현이 가능하면 int형으로 int 데이터타입보다 큰 데이터타입이 필요한 경우에는 더 큰 데이터타입으로 초기화가 진행됩니다.
double형 또한 마찬가지로 double형 보다 큰 데이터타입이 필요한 경우에는 더 큰 데이터 타입으로 초기화가 진행됩니다.
그래서 float데이터 타입으로 실수를 초기화하였을 때 컴파일은 가능하지만 경고 오류문구가 나오는 경우를 보셨을 겁니다.
float num1 = 30.23; // <- 오류 문구 발생!!!
float num2 = 10.23f; // < 오류 발생 없음!
그 이유는 전에 말씀드렸듯이 "리터럴(Literal)상수"는 실수일 경우 "double"형 데이터타입으로 메모리에 저장되기 때문입니다.
그렇기 때문에 'f'와 같은 접미사를 이용해서 변수를 초기화 해야하는 데이터타입들이 존재합니다. !!!!
2. 심볼릭(Symbolic) 상수
"리터럴(Literal)상수"의 개념도 익히셨으니 이제는 "심볼릭(Symbolic)상수"에 관하여 설명드리도록 하겠습니다.
초기화 시 데이터타입 앞에 "const"라는 키워드를 사용하면은 언제든지 "심볼릭(Symbolic) 상수"로 초기화할 수 있습니다.
const int PI = 3.1415; // 심볼릭 상수 초기화!
PI = 12345; // <- 오류 발생!
위 코드를 보시게되면은 "심볼릭(Symbolic) 상수"를 선언 후 다른 숫자를 대입하는 과정에서 오류가 발생하는 부분을 볼수 있을 것입니다.
즉, 초기화 이후 절대로 변경되어서는 안되는 변수를 얻고자할 때 "심볼릭(Symbolic)상수"를 사용하게됩니다.
원주율 같은 경우가 있겠죠?
심볼릭 상수는 꼭 필요할 때 사용할 경우 디버깅하는 과정을 통해서 쉽게 오류를 찾아내기도 합니다. !!!!
변수보다는 자주쓰이지는 않지만 꼭 알아둬야 할 상수 개념을 소개해드렸습니다.
감사합니다.
'Language > C 언어' 카테고리의 다른 글
C언어의 지역변수와 전역변수 static,register 변수 (0) | 2020.02.08 |
---|---|
C언어의 함수 사용방법 (0) | 2020.02.08 |
C언어의 여러가지 데이터 타입의 연산 방식 (0) | 2020.02.07 |
printf(), scanf() (0) | 2020.02.05 |
C언어의 컴파일 단계 (0) | 2020.02.05 |
- Total
- Today
- Yesterday
- 스택 #자료구조 #Stack #IT디자이너 #알고리즘 #C언어 #스택 과제 #C++
- C언어 #C++ #어셈블리어 #함수 호출 규약 #IT디자이너 #비쥬얼 스튜디오 #IT
- 디버그 #Debug #Release #디버그와 릴리즈 차이 #C언어 #C++언어 #어셈블리어
- C언어 #C++ #구조체 정렬 #pragma #IT디자이너
- C언어 #C++ #어셈블리어 #구조체 #구조체 특징 #IT디자이너
- QUEUE #큐 #자료구조 #원형 큐 #Circle Queue #IT디자이너 #큐 과제 #C언어 #C++언어
- C언어 #포인터 #배열 포인터 #포인터 배열 #함수
- C언어 #C++ #어셈블리어 #열거형 데이터타입 #IT디자이너
- C언어 #C++ #삼각함수 #IT디자이너 #문제풀이 #2진수 #16진수 #비트 #bit #비트연산자
- C언어 #C++ #시간 함수 #타이밍 맞추기 #timer interrupt #IT디자이너
- C언어 #IT디자이너 #C++언어
- C언어 #C++ #어셈블리어 #재귀함수 #IT디자이너
- C언어 #스트림 #버퍼링 #표준 입출력 함수 #C++언어 #IT디자이너
- IT디자이너 #C언어 #C++ #속성지정자 #기억클래스 #IT #const #static #register #volatile #extern #auto #s
- C언어 #C++ #IT디자이너
- 어셈블리어 #IT디자이너 #C언어 #C++언어 #어셈블리 #어셈블러
- IT디자이너 #QuickSort #퀵정렬 #C언어 #C++ #자료구조 #알고리즘
- C언어 #C++ #switch #if #어셈블리어 #switch문 사용 이유 #IT디자이너
- C언어 #IT디자이너
- C언어 #IT디자이너 #포인터 #배열 #포인터와 배열
- C언어 #C++ #IT디자이너 #함수 #재귀 함수 #스택 #자료구조 #페인팅
- C언어 #C++ #IT디자이너 #C++ 함수
- C언어 #C++ #파일 입출력 #텍스트파일 #IT디자이너
- IT디자이너 #C언어 #C++ #IT디자이너 #코딩테스트
- C언어 #C++ #자료구조 #알고리즘 #IT디자이너 #버블 정렬 #BubbleSort
- C언어 #C++ #캐시hit #캐시라인 #캐시무효화
- C언어 #자료구조 #C++ #연결리스트 #리스트 #알고리즘 #IT디자이너
- C언어 #포인터 #IT디자이너
- Debug #C언어 #C++ #비쥬얼스튜디오 #Release #IT
- C언어 #C++ #어셈블리어 #IT디자이너 #비트연산자 #연산자 #C언어의 비트 연산자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |