프로그래밍 74

#23. #define & typedef & Rand & 열거형

*ifndef / endif #ifndef _PARAMS_HLSLI_ => ifndef => 이 부분이 define 되지 않았으면, #define _PARAMS_HLSLI_ => 아래부분을 추가해주세요. ... #endif => 헤더파일로 사용하겠다. *define ( 코드를 바꿔치기하는 개념 ) => 전처리기 #include => ( 이라는 파일을 찾아서 해당 내용을 복사해주세요.) => 빌드 순서 1. 전처리 ( 준비운동 ) srand 로 seed 값을 계속해서 바꾸어주어야 하는데 현재시간을 넣어서 계속해서 바뀔수 있도록 함. => 계속해서 누적해 나가는 시간 필요. => srand 를 사용하지 않으면 seed = 1 => 최초 1회만 선언 srand( time(0) ); // 시드 설정 rand()..

프로그래밍/C++ 2022.07.17

#22. 반복문

* do-while => 무조건 한번 은 do 영역를 실행시킴. *for 문 다양한 처리 int j = 0; for (;;) { ++j; if (j == 1000) break; } for (;; ++j) { if (j == 2000) break; } int i = 0; for( ; i < 10; ++i) { }​ 즉, for ( '1'; '2'; 3 ) 1,2,3 번 의 값들을 모두 비워도됨. 대신, 문법적으로 조건을 넣었다고 ';' 두 번으로 알려줘야함. for ( ; ; ) 본 내용은 인프런의 루키스님 강의를 듣고 정리한 내용입니다. 강의 듣기 !!

프로그래밍/C++ 2022.07.17

#20. 유의사항

1. 변수의 유효범위 *전역변수 int hp = 10; *지역변수 { } 중괄호의 범위 => 변수의 생존 범위 => 같은 이름을 두 번 사용할 때. 2. 연산 우선순위 => 정확하지 않다면 ( ) 를 붙이자. ex) 짝수 여부 bool IsEven = ( (hp % 2) == 0 ); ex) 짝수 거나 3으로 나뉘는 값인지 bool isEvenOrDivBy3 = ( (hp % 2) == 0 || (hp % 3) == 0) ; 3. 타입 변환 => 바구니 교체 => 윗쪽 비트 데이터가 짤린 상태로 저장. int hp = 77777; short hp2 = (short)hp; float hp3 = (float)hp; // 실수로 변환할 때 정밀도 차이가 있기 때문에 데이터 손실 unsigned int hp4 ..

프로그래밍/C++ 2022.07.17

#19. const, define

*const => 상수화 : 어떤 값을 수정할 수 없는 데이터로 만든다. => '읽기' 만 가능한 데이터. ex) "Hello world", const int t = 1; => 해당 내용을 수정하려하면 컴파일러가 오류 보고. const int AIR = 0; const int STUN = 1; const int POLYMORPH = 2; const int INVINCIBLE = 3; => const 지정 시, 반드시 초기화 해주어야 함. *#define #define Test 1 => '전처리기' => 선언된 문자를 지정한 문자로 대체한다는 개념. *const 변수는 무조건 메모리 할당되어지는가 ?? => const 가 전역으로 정의되어지면 #define 과 같이 대체되는 개념으로 &B 주소는 존재하지 ..

프로그래밍/C++ 2022.07.17

#19. static 정적변수

*정적 멤버 데이터 => 객체를 만들지 않아도 프로세스 시작할 때 미리 생성. => 해당 범위 내에 인스턴스가 하나만 생성. 즉, 클래스마다 생성되지 않음. => 초기화는 클래스 외부에서 해주어야함. ( 필드 초기화 사용 불가 ) class Player { public: static const int Num = 50; const int Num2 = 40; int Item[Num]; int Item[Num2]; => 불가. }; * const 변수로 배열 크기를 지정할 수 없는 이유. 정의 시점이 다름. 지금 상황의 const int 는 클래스가 정의된 이후 40 이란 값으로 초기화됨. 근데 Player 클래스를 선언하는 상황에서 Num2 라는 상수 변수는 존재하지 않음. 따라서, 아직 값이 정해지지도 않..

프로그래밍/C++ 2022.07.17

#18. 비트 연산과 비트 플래그

*비트 연산 => 비트 단위의 조작이 필요할 때. ~ => bitwise not 단일 숫자의 모든 비트를 대상으로, 0 -> 1 , 1 -> 0 으로 뒤집는 것. & => bitwise and 두 숫자의 모든 비트 쌍을 대상으로, and 를 한다. | => bitwise or 두 숫자의 모든 비트 쌍을 대상으로, or 를 한다. ^ => bitwise xor 두 숫자의 모든 비트 쌍을 대상으로, xor 를 한다. int a = 1; int b = 123; a = a ^ b; a = a ^ b; => 다시 a = 1 이 됨. *시프트연산 https://docs.microsoft.com/ko-kr/cpp/cpp/left-shift-and-right-shift-operators-input-and-output?..

프로그래밍/C++ 2022.07.16

#17. 비교 연산과 논리 연산

*비교 연산 ex) 체력 = 0 => 사망 경험치가 100 이상이면 레벨업 int a = 1; int b = 2; bool IsSame = false; bool IsDifferent = false; bool IsGreater = false; bool IsSmaller = false; IsSame = (a == b); IsDifferent = (a != b); IsGreater = (a > b); IsSmaller = (a < b); *논리연산 ex) 로그인할 때 아이디도 같고 AND 비밀번호도 같아야 한다. 길드마스터이거나 OR 운영자 계정이면 길드 해산 가능 // ! not test = !IsSame; // && test = (hp 0 || IsInvincible == true); // 살아있는 상태 ..

프로그래밍/C++ 2022.07.16

#16. 산술 연산

*산술 연산자 => 대입연산 / 사칙연산 https://ko.wikipedia.org/wiki/%EC%82%B0%EC%88%A0 *대입 연산 * a 에 b 를 대입하고 b 를 반환하라 !! a = b; a = b = 3; => a = ( b = 3 ); *사칙연산 => ex) 데미지계산, ....등 a++; // add eax, 1 = inc eax *곱셈의 우선순위가 높다. * ++a / a++ 차이점 *어셈블리로 코드 보기 b = a++ b = ++a 가 다르다는 것을 어셈블리 코드로 확인할 수 있다. 본 내용은 인프런의 루키스님 강의를 듣고 정리한 내용입니다. 강의 듣기 !!

프로그래밍/C++ 2022.07.16

#15. UTF & ASCII

*char => 정수지만 '문자' 의미를 나타내기 위해 사용 char : 알파벳 / 숫자 문자를 나타냄. wchar_t : 유니코드 문자를 나타냄. ASCII ( American Standard Code for Information Interchange ) char ch = 97; char ch = 'a' char ch 2 = '1' '유니코드' ( unicode ) => 전 세계 모든 문자에 대해 유일 코드를 부여한 것 => 유니코드에서 가장 많은 번호를 차지하는게 한국어/중국어~ (뚥쿩웱) => 유니코드는 표기 방식이 여러가지가 있는데 대표적으로 UTF8 / UTF16 *UTF8 => 알파벳, 숫자 1바이트 ( ASCII 동일한 번호 ) => 유럽 지역의 문자는 2바이트 => 한글, 한자 등 3바이트..

프로그래밍/C++ 2022.07.16