상수

2022. 4. 9. 00:39C++

변수 : 변할 수 있는 수

상수 : 변하지 않는 수

  • 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;}

 

'C++' 카테고리의 다른 글

inline 함수  (0) 2022.04.09
매크로  (0) 2022.04.09
동적 할당  (0) 2022.04.03
연산자 오버라이딩  (0) 2022.04.03
Inheritance  (0) 2022.04.03