본문 바로가기
공부/c++

#15 상수 만들기 | const | 매크로 | enum | c++

by 심심한 뾰 2021. 9. 20.
반응형

#상수의 정의

상수 : 변하지 않는 수

변수 : 변하는 수

 

# 상수를 지정하는 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++ 강좌를 올리고 있고 다른 컨텐츠는 할 수도 있고 안 할 수도 있는 채널. ▶ 두들낙서 지식공유 서버 참가하기: https://discord.gg/y4SXcjU

www.youtube.com

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