1. 자료형
int A = 0
위와 같은 코드에서 우리는 A를 변수라고 칭한다.
변수 == 메모리 공간
메모리 공간에 각각의 주소(예시 : -0084FC9A)를 변수명이라 지어서 부르는 것이다.
즉, 10이 저장된 메모리의 주소를 A라고 우리가 부르는 것이다.
그렇다면 int는 무슨 의미일까?
int는 자료형을 뜻한다.
C++ 자료형
int :정수형(운영체제, 컴파일러 등 상황에 따라 변화, 보통 4Byte)
* int는 4Byte로 2^32, 약 40억개 즉, 4G의 메모리 공간을 갖는다.
short : 정수형(2Byte)
float : 실수형(4Byte, 소수점 5번째 자리까지 표현가능, 숫자뒤에 f를 붙임)
double : 실수형(8Byte, float보다 정밀.)
char : 문자 (1Byte, 실제로는 문자에 맞는 숫자로 변환되어 숫자가 저장.)
bool : 참 거짓 자료형(true, false 또는 0이 아닌 수, 0)
이처럼 변수의 앞에 어떤 데이터를 저장할 것인가를 지정해주는 것이 자료형이 된다.
자료형의 앞에 unsigned를 붙이면 양수만, signed를 붙이면 양수 또는 음수 값을 저장하며 굳이 기재하지 않는다면 기본값인 signed가 들어가게 된다.
2. 배열
int의 Data 100개를 저장한다고 하면?
int age1 = 1;
int age2 = 2;
int age3 = 3;
int age4 = 4;
.
.
.
.
int age 100 = 100;
이렇게 100번을 작성해야한다.
만약 1000개라면? 10000개 그 이상이 된다면?
위와 같이 반복되는 경우 결국 하고자하는 것은 1~100까지 메모리를 연속적으로 잡고자 하는 것이다.
쉽게 말해서 같은 자료형의 묶음을 만드는 것이다.
int age [100] = {1, 2, 3, 4, 5, 6, 7, 8, ...., 100};
int age [100] = {0, };
//배열의 전체 초기화
age[19] = 20;
//특정 인덱스에 접근
자료형 + 변수명 + [크기] = {초기화};
위와 같이 사용하면 된다.
*배열의 속성
1) 배열은 0번째부터 시작한다.
2) 배열의 이름은 해당 배열의 주소값과 같다. ex) I_array = &I_array;
3) 배열의 인덱스는 해당 배열을 가르키는 포인터와 동일하다. Pixel[1] == *(Pixel + 1);
3. 2차원 배열
int Screen[8][8] =
{
{ 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1 },
};
int PlayerX = 1;
int PlayerY = 1;
char Key = 0;
for(;;)
{
cin >> Key;
if(Key == 'w'){PlayerY--;}
else if(Key == 's'){PlayerY++;}
else if(Key == 'd'){PlayerX++;}
else{PlayerX--;}
sysytem("cle");
for (int Y = 0; Y < 8; Y++)
{
for (int X = 0; X < 8; X++)
{
if(PlayerX == X && PlayerY == Y)
{
cout << "P";
}
if(Screen[Y][X] == 0)
{
cout << " ";
}
else if(Screen[Y][X] == 1)
{
cout << "*";
}
}
cout << endl;
}
}
이처럼 2차원 배열은 [][] 2개의 중괄호를 사용해서 나타낸다.
3차원은 [][][] 3개의 중괄호를 사용
다만, 3차원까지는 잘 사용하지 않고 3차원을 쓰기 보단 2차원을 알고리즘을 써서 사용한다.
4. 반복문 / 조건문
반복문
for / while
주로 배열을 탐색하거나 같은 행동을 반복해야 할 때 사용된다.
for(int i = 0; i < 10; ++i)
{
std::cout << i << std::endl;
}
int X = 0;
while(true)
{
if(X > 0)
{
break;
}
X += 1;
}
면이 나오면 2중 반복문을 사용하여 구현해야한다.[8][8] 배열을 탐색 시 8*8이다.
반복문을 늘리면 *8씩 늘어나기 때문에 성능이 확연히 떨어진다.
반복문 3중부터는 성능이 많이 떨어지기 때문에 잘 사용하지 않는다.
조건문
if /else if
int X = 10;
if(X == 10)
{
}
else if(X == 9)
{
}
else
{
}
if문 내 조건이 참인 경우 해당 구문을 실행한다.
if를 통해 해당 구문을 실행하면 다른 else if는 실행하지 않는다.
만약 대각선 이동 등과 같이 두 개의 키를 확인하려면 if 문을 각각 써야하는 것이다.
5. 연산자
== : 같다 != : 다르다
< : 오른쪽이 더 크다 >= 크거나 같다
> : 왼쪽이 더 크다 <= 크거나 같다
A || B : A와 B 모두 거짓일 경우 거짓. 하나라도 참이면 참
A && B : A와 B 모두 참일 경우 참, 하나라도 거짓이면 거짓
+ : 더하기 += : 더한 값을 대입 - : 빼기 -= : 뺀 값을 대입
/ : 나누기 /= 나눈 값을 대입 % 나눈 나머지 %= 나눈 나머지 값을 대입.
++ 다음 단계로 증가(값이 증가)
-- 이전 단계로 감소(값이 감소)
! : 참이면 거짓, 거짓이면 참으로 값을 변환
* 증감연산자(++, —)는 전치냐 후치냐에 따라 성능이 다르다.다만, 요즘은 컴파일러가 좋아져서 성능차이가 크게 나진 않는다.또한 증감연산자는 줄이 바뀌면 넘어가기 때문에 헷갈리지 않도록 줄을 바꿔주는게 좋다. 어셈블리어로 전치가 1줄, 후치가 3줄이기 때문이다.
- 기타
1) cin / cout : Console in / Console Out의 약자
2) 부동소수점으로 실수를 표기하기 때문에 실수형 변수들에게 == 은 사실상 불가한 뜻이다.
3) 변수 선언 시 초기화하지 않으면 이미 존재하는 쓰레기값에 의해 문제가 발생할 수 있다.
4) 언리얼 엔진에서 변수명으로 _는 사용 불가하다.
5) 무언가를 구현할 때 잘 모르겠다면 질문을 아주 작게 쪼개서 생각하여 구현하자.
6) IDE는 윈도우 Visual Studio 2022를 사용한다. (IDE : Integrated Development Environment의 약자로 통합 개발 환경 즉, 프로그래머가 소프트웨어를 개발하는데 필요한 다양한 도구와 기능을 통합해 제공하는 소프트 웨어)
7) 운영체제가 32bit인 경우 2^32 즉, 4G의 명령만 처리 가능하기 때문에 32bit 운영체제에선 Ram이 4G 이상이어도 소용이 없다.
8) 형변환은 반드시 기재할 것. 의도한 바를 정확하게 보여주는게 중요하다.
9) 컴퓨터는 오른쪽 밑으로 갈수록 값이 커진다.
'C++ > 문법' 카테고리의 다른 글
File Input Output & Delta Time (0) | 2024.11.07 |
---|---|
Inline & Switch case문 (8) | 2024.11.06 |
Class 와 Template (0) | 2024.10.31 |
C++ 기본 문법(문자열, 동적할당, 구조체) (2) | 2024.10.25 |
C++ 기본 문법(변수와 함수) (0) | 2024.10.23 |