배운내용 정리
변수는 변할 수 있는 수라면, 상수는 변하지 않는 수이다. const, 매크로, enum을 통해 상수를 설정할 수 있다.
1. const
constant의 약자로, '변함없는' 이라는 뜻을 가지고 있다. 변수를 선언할 때 앞에 const를 붙여 상수로 만들 수 있다.
int main() {
const float PI = 3.14159;
printf("π = %.2f\n", PI);
}
이 코드에서 PI는 3.14159로 값이 고정되었기 때문에 PI를 출력하면 3.14159가 나온다.
2. 매크로
#define을 써서 정의한다.
#include <stdio.h>
#deifne PRINT_HELLO printf("Hello, World!");
int main(){
PRINT_HELLO
}
PRINT_HELLO를 printf("Hello, World!"); 로 정의한 코드이다. 메인함수에 PRINT_HELLO를 넣으면 Hello, World!가 출력된다.
#define SQUARE(X) (X * X)
int main(){
int a;
scanf("%d", &a);
printf("%d\n", SQUARE(a));
}
식도 정의할 수 있고,
#define FOR(I,S,E) for (int I = S; I <=E; I++)
#define LOOP while (true)
int main(){
FOR(i, 1, 10){
printf("%d", i);
}
LOOP{
printf("*");
}
}
for문, loop문 등을 정의해둔 후 변수만 바꾸면 다양한 곳에 활용할 수 있다.
3. enum
enum은 열거형(enumerated type)이라고 부른다. 서로 연관된 함수들의 집합이다. 순서를 매기지 않아도 자동으로 순서를 정해주고, 중간에 직접 지정할 수도 있다. 자료형을 쓰지 않아도 알아서 해준다.
enum EGameState{
GAMESTATE_MAINMENU,
GAMESTATE_PLAYING,
GAMESTATE_PAUSED,
GAMESTATE_GAMEOVER
};
int main(){
int currState=0;
while(true){
switch(currState){
case GAMESTATE_MAINMENU:
break;
case GAMESTATE_PLAYING:
break;
case GAMESTATE_PAUSED:
break;
case GAMEOVER:
break;
}
}
switch문과 enum을 활용해서 간단한 게임 목차를 만들었다.