반응형
#상수의 정의
상수 : 변하지 않는 수
변수 : 변하는 수
# 상수를 지정하는 3가지 방법
1. const
2. 매크로
3. enum
1. const
1
2
3
4
5
|
#include <iostream>
int main(){
const float PI = 3.14159;
}
|
cs |
- const로 정의한 변수는 주소값을 가지고 있음 -> 메모리 안에 저장돼 있음
- const로 선언한 상수 에는 어떠한 값을 대입할 수도, 연산을 할수도 없다. 대입이나 연산을 시도한다면, 오류가 생긴다.
2. 매크로
1
2
3
4
5
6
7
8
9
10
|
#include <iostream>
#define PI 3.14159 //매크로
int main(){
float a = PI;
std::cout << PI;
PI = 0; //불가능
}
|
cs |
- 메모리 상에 저장되지 않는다. (주소값을 가지고 있지 않음)
define으로 상수를 저장한다면, PI는 수 안에 그저 3.14159라는 숫자를 집어 넣는 것이기 때문에 메모리 상에 저장되지 않는다.
즉,
PI = 0;
은
3.14159 = 0;
와 같다.
3. enum
예시를 들어, enum을 설명해 보도록 하겠다.
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
|
#include<iostream>
//enum
//게임 만들기
//숫자 헷갈릴 수 있기에 상수 사용
int main(){
int currState = 0;
while(true){
switch (currState){
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
}
}
}
|
cs |
switch문을 사용한 일반적인 코드이다.
이 코드의 enum을 사용해 바꾸어 본다면,
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
29
30
31
32
|
#include<iostream>
//enum
//게임 만들기
//숫자 헷갈릴 수 있기에 상수 사용
enum EGameState{
GAMESTATE_MAINMENU,
GAMESTATE_PLAYING,
GAMESTATE_PAUSED,
GAMESTATE_GAMEOVER
};
int main(){
int currState = GAMESTATE_MAINMENU;
while(true){
switch (currState){
case GAMESTATE_MAINMENU:
break;
case GAMESTATE_PLAYING:
break;
case GAMESTATE_PAUSED:
break;
case GAMESTATE_GAMEOVER:
break;
}
}
}
|
cs |
- 구조체와 마찬가지로, 코드의 맨 위에 enum을 정의하는 것이 일반적이다.
- enum에서는 따로 수를 정의하지 않더라도, 차례대로 1, 2, 3, 4로 저장된다.
이때, 중간에 GAMESTATE_PAUSED = 4로 정의하게 된다면,
차례대로 1, 2, 4, 5로 저장된다.
유연한 문법을 갖고 있음.
출처(source) - 유튜브 두들낙서님
https://www.youtube.com/c/%EB%91%90%EB%93%A4%EB%82%99%EC%84%9C
c++ 최고의 강좌,,
반응형
'공부 > c++' 카테고리의 다른 글
#16 매크로 자세히 알아보기 | c++ (0) | 2021.09.20 |
---|---|
#14 이중 포인터와 typedef (0) | 2021.09.20 |
#13 구조체 포인터 | c++ (0) | 2021.09.20 |
#12 구조체 | struct | c++ (0) | 2021.09.20 |
#11 typedef (0) | 2021.09.20 |