[Unreal] 언리얼 기초 C++_01

본 문서는 어소트락 언리얼엔진 게임프로그래머 양성과정의 강의를 토대로 필기한 내용입니다

프로젝트

#include <iostream> // 전처리기
using namespace std; // 네임스페이스

// 콘솔프로젝트의 시작점
// 코드블럭 안에 작성한 작업이 진행된다
int main()
{
    printf("출력 테스트\n");          // C언어 타입의 출력
    std::cout << "cout 출력테스트\n"; // :: 범위 지정 연산자
								     // std 안에 있는 cout을 의미

    return 0;
}
  • 통합개발환경 (IDE, Integrated Development Enviroment)
    • 코딩, 컴파일, 디버깅, 실행을 통합시켜 놓은 어플리케이션

컴파일러

  • 사람들이 사용하기 편한 언어로 작성한 작업내용을 기계어로 번역할 수 있도록 번역

전처리기

  • 전처리기에서 지원하는 기능 여기에 포함시켜서 사용할 수 있게 해준다
  • 컴파일 전에 미리 처리

네임스페이스

  • 이름 충돌을 막기 위함
  • iostream에서 지원하는 기능들은 std라는 namespace 안에 구현된 기능들이 많다

메모리

  • 원하는 데이터를 저장할 수 있는 공간 -> 메모리
  • 메모리에 공간을 만들고 데이터를 저장하는 방식

  • 1bit : 0과 1 둘 중 하나를 표현할 수 있다
  • 1byte : 8bit. $2^8$ = 256

변수 vs 상수

  • 변수 : 변경 가능한 수
  • 상수 : 변경 불가능한 수

  • signed : 부호를 가짐. -, + 둘 중 하나를 가진다
  • unsigned : 부호가 없다. +만 가짐
    
타입표현 종류크기표현 범위
bool참 / 거짓1bytefalse(0) ~ true(1)
char문자1byte-128 ~ 127
short정수2byte-32768 ~ 32767
int정수4byte-2147483648 ~ 2147483647
__int64정수8byte 
float실수4byte 
double실수8byte 

변수타입 변수명; // 선언 : 메모리에 변수타입 크기에 맞는 공간을 만든다
변수명 = 100; // 할당 : 해당 메모리 주소에 값을 할당한다

  • 변수명명법
    • 숫자로 시작할 수 없다
    • 특수문자는 _만 첫글자로 가능
    • 영문만 사용가능

형변환

  • 해당 줄에서 일시적으로 다른 타입으로 인식하는 것
  • 실수를 정수타입의 변수에 대입을 하게 되면 소수점 자리가 탈락하고 정수 부분만 대입됨

진법

  • 10진수 : 0 ~ 9 사이의 숫자로 구성된 집합
  • 2진수 : 0 ~ 1 사이의 숫자로 구성된 집합
  • 16진수 : 0 ~ 15 사이의 숫자로 구성된 집합. 10 ~ 15 사이의 숫자는 A ~ F로 표현

연산자

  • 대입연산자 : =
  • 사칙연산자 : +, -, *, /, %
  • 관계연산자 : <, >, <=, >=, ==, != / 값 대 값을 연산하여 참,거짓이 결과로 도출
  • 논리연산자 : AND(&&), OR( ), NOT(!) / 참,거짓 대 참,거짓을 연산하여 참,거짓을 결과로 도출
  • 비트단위 논리연산자 : AND(&), OR(), NOT(~), XOR(^) / XOR 연산 : 같0다1
  • 시프트연산자 : «, » / 빠른 곱하기,나누기 (2의 n승 단위의 곱셈, 나눗셈)
  • 증감연산자 : ++, –
  • 복합대입연산자 : +=, -=, *=, /=, %=, &=,=, ^=

조건문

if문

  • 조건을 체크할 때 사용
  • 여러 분기를 만들어서 여러 개의 분기 중 하나를 선택해서 동작 시켜야할 경우 사용 가능
  • else, else if문
    • else, else if는 if 없이 혼자 사용 불가.
    • else는 if 하나에 하나의 else만 존재
    • else if는 if 하나에 여러개의 else if가 존재할 수 있다
if (조건식) // 조건식이 true일 경우 코드블록 안의 코드를 동작시킨다
{
	동작할 코드
}
else if (조건식2)
{
}
else	// 위의 조건들이 false일 경우 아래 코드 동작
{
}

switch 문

int number = 2;
switch (number)
{
	case 1:
		동작할 코드
		break;
	case 2:
		동작할 코드
		break;
	default:
		동작할 코드
		break;
}

열거형

  • 상수에 이름을 부여하는 기능을 지원
  • 사용자 정의 타입이 만들어짐
  • 종류 : enum, enum class
  • 열거형의 선언되는 요소들은 0부터 시작해서 값이 1씩 증가하게 된다
  • 열거형의 요소에 값을 직접 대입할 수도 있다
  • 열거형 이름 충돌 방지를 위해 네임스페이스로 감싸주는 방식을 사용한다
  • 열거형 선언 시 type의 크기 자체를 제한할 수도 있다
// 열거형 이름 충돌 방지를 위해 namespace로 감싸준다
namespace EJob
{
	enum Type : short // Enum 타입의 크기를 2바이트로 제한
	{
		Knight = 1,
		Archer,
		Magician
	};
}

enum class EJob1 : unsigned char // Enum Class의 크기를 1바이트로 제한
{
	Knight,
	Archer,
	Magician
};


int main(){
	int job = EJob::Magician;
	EJob1 job1 = EJob1::Knight;

	switch (job)
	{
	case EJob::Knight:
		cout << "Knight" << '\n';
		break;
	case EJob::Archer:
		cout << "Archer" << '\n';
		break;
	case EJob::Magician:
		cout << "Magician" << '\n';
		break;
	}
}

반복문

  • 같은 코드를 여러 번 동작시킬 때 사용한다
  • for, while, do while 3가지 문법 지원

for문

for(초기값; 조건식; 증감값)
{
    반복할 코드
}
  • 초기값 : for문이 시작될 때 1번만 동작한다
  • 조건식 : for문이 동작될 때 계속 동작한다
  • 증감값 : for문이 동작될 때 계속 동작한다

  • 동작 방식
    • 초기값 => 조건식 => 코드실행 => 증감값 => 조건식 => 코드실행 => 증감값 => 조건식 …
  • 내가 원하는 횟수만큼 반복 시키기에 유리

  • 중첩해서 사용 가능
    for(int i = 0; i < 3; i++)
    {
      for(int j= 0; j < 3; j++)
      {
          if(j == 3) break;
          printf("i = %d, j = %d\n", i, j);
      }
    }
    

break, continue문

  • 반복문 안에서 break문을 만나면 해당 반복문을 종료시킨다
  • 반복문 안에서 continue문을 만나면 그 아래 코드를 진행시키지 않고 반복문 시작점으로 다시 돌아가서 반복문을 동작한다

while문, do while문

while (조건식)
{
    if(조건2) break;
}
// 처음 한번은 무조건 동작시키고 그 후에 조건식을 체크한다
do
{

} while (조건식);

© 2023 Jinsoo Lee. All rights reserved.

Powered by Hydejack v9.1.6