반응형
경일게임아카데미 프로그래밍반 28기 4일차 수업 (21. 04. 13)
전처리기
#define ZOMBIE_MAX 10000
#define CASHUSER
매크로
#define PI 3.14f
#define PI2 PI * 2
#define PLUS(x) x + x
// defind문은 디버깅 되지 않으며, 세미클론을 찍지 않는다.
형변환
#include <iostream>
using namesapce std;
void main()
{
// 형변환은 다른말로 casting 이라한다.
float MoveSeppd = 3.3f;
int distance = MoveSeppd * 3;
// 실수형 float이 정수형 int에 대입 되었기 떄문에 출력되는 int형 변수는 소수점 표현이 되지 않는다. 그래서 .9가 싸그리 날아간다.
// 이렇게 내가 형변환 하려고 한건 아니지만 형변환 처리가 되어버린 것을 묵시적 형변환이라고 한다.
cout << "이동한 거리 : " << distance << endl;
// 반대로, 내가 직접 형변환을 명시해줌으로써 캐스팅 하는 것을 명시적 형변환이라고 한다.
cout << "이동한 거리 : " << (int)MoveSeppd << endl;
int a = 65;
cout << a << endl;
// C언어 혹은 C#에서 쓰는 캐스팅은 다음과 같다.
cout << (char)a << endl;
}
캐스팅의 종류
#include <iostream>
using namesapce std;
void main()
{
// C++ Casting
// 1. static_cast
// C 스타일의 형변환과 기능이 같지만 형변환의 위험성을 고려해 한번 점검한 다음 변환한다.
cout << static_cast<char>(a) << endl;
// 2. dynamic_cast
// 상속 관계에서 누구와 상속 관계인지 업캐스팅 또는 다운캐스팅 할때 쓰면 매우 편리하다.
// 단점 : 속도가 느리다.
// reinterpret_cast
// 강제 형변환
}
전처리기를 이용한 셔플 알고리즘
#include <iostream>
#define ZOMBIE_MAX 10000
using namesapce std;
void main()
{
int zombie[ZOMBIE_MAX];
int dest, sour, temp;
for (int i = 0; i < ZOMBIE_MAX, i++)
{
zombie[i] = i + 1;
}
// 섞어주는 횟수 (셔플 알고리즘)
for (int i = 0; i < 100; i++)
{
dest = rand() % 10; // 8
sour = rand() % 10; // 7
temp = zombie[dest];
zombie[dest] = zombie[sour];
zombie[sour] = temp;
}
for (int i = 0; i < 10; i++)
{
cout << zombie[i] << endl;
}
}
전처리기를 이용한 ifdef 문법
#include <iostream>
#define CASHUSER
using namesapce std;
void main()
{
#ifdef CASHUSER
{
cout << "능력치 빠빵하게" << endl;
}
#else
{
cout << "기본적으로" << endl;
}
#endif
}
반응형
'학원 > 경일게임아카데미' 카테고리의 다른 글
6. 다섯번째 수업 (0) | 2022.12.01 |
---|---|
5. 네번째 수업 과제 [1인 빙고게임 제작] (0) | 2022.11.30 |
3. 세번째 수업 (0) | 2022.11.28 |
2. 두번째 수업 (1) | 2022.11.27 |
1. 첫번째 수업 (0) | 2022.11.26 |