상수
2022. 4. 9. 00:39ㆍC++
변수 : 변할 수 있는 수
상수 : 변하지 않는 수
- const
- 매크로
- enum
const
상수의 경우 실수로 값이 바뀌는 경우가 없어야 한다.
float pi = 3.141562;
float a = pi;
float b = pi *= 2; //pi에 6.28312 저장됨.
> 아래와 같이 const를 써 해결할 수 있다.
const float PI = 3.141562; //상수는 일반적으로 대문자를 사용한다.
float a = PI;
float b = PI *= 2; //오류발생! const로 선언했기에 바꿀 수 없다!
> const를 사용한 PI는 메모리 상에 직접 저장된다.
매크로
#define PI 3.141592 //매크로
int main(void)
{
float a = PI;
return 0;
}
enum
int main(void){ //알아보기 어려움
int currState = 0;
while(true){
switch (currState){
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
}
}
return 0;
}
위의 코드를 용도에 맞게 아래와 같이 수정해도 좋지만, 메모리를 많이 차지할 뿐만아니라 case가 추가되어 각 menu들의 숫자가 바뀌게 될 경우 번거롭다.
#include <iostream>
using namespace std;
const int GAMESTATE_MAINMENU = 0; //메모리를 많이 잡아 먹는다.
const int GAMESTATE_PLAYING = 1; //새로운 STATE를 추가할때, 숫자를 다시 수정해야 한다. EX. LOGO = 0,
const int GAMESTATE_PAUSED = 2;
const int GAMESTATE_GAMEOVER = 3;
int main(void){
int currState = 0;
while(true){
switch (currState){
case GAMESTATE_MAINMENU:
break;
case GAMESTATE_PLAYING:
break;
case GAMESTATE_PAUSED:
break;
case GAMESTATE_GAMEOVER:
break;
}
}
return 0;
}
>아래와 같이 enum을 사용한다.
enum EGameState{ //enum은 대부분 E로 시작한다.
GAMESTATE_MAINMENU, // =0, 자료형을 지워도 int로 간주한다.
GAMESTATE_PLAYING, // =1, 콜론으로 잇는다.
GAMESTATE_PAUSED = 3, //숫자를 지워도 자동으로 0부터 시작하는 유연한 문법이 가능하다
GAMESTATE_GAMEOVER, // =4
}; //세미콜론으로 마무리한다.
int main(void){return 0;}