목록2024/04/04 (11)
그냥 게임개발자
예를 들어 int / float를 계산하게되면 어떤 타입으로 변환이 되어 나올까? 바로 float다. 이렇게 타입이 변환이 되는 것을 암시적 형변환이라고 하는데 우선순위는 아래와 같다. 1 long double 2 double 3 float 4 unsigned long long 5 long long 6 unsinged long 7 long 8 unsigned int 9 int(lowest) 이 때문에 vector의 size()를 기반으로 음수가 나올 수 있는 연산을 할 때 주의해야 한다. vector의 size()라는 메서드는 unsgined int를 반환한다. 예를 들어 v.size()값이 8이면 v.size() - 10 이렇게 연산을 할 때 결과값은 음수가 나와야 하지만 unsigned int와 in..
auto는 C#의 var와 같다. 타입 추론을 하여 결정되는 타입이다. #include using namespace std; int a = 1; auto b = 1; int main() { cout
pair와 tuple은 자료구조가 아니지만 C++에서 제공하는 utility라는 라이브러리의 템플릿 클래스이다. 또한 자주사용 되기에 복습해보았다. pair pair는 first와 second라는 멤버변수를 가지는 클래스이며 두 가지 값을 담아야 할 때 쓴다. tuple tuple은 세가지 이상의 값을 담을 때 쓰는 클래스이다. #include #include #include using namespace std; pair pi; tuple tl; int a, b, c; int main() { pi = {1, 2}; tl = make_tuple(1, 2, 3); tie(a, b) = pi; cout
float 실수는 알지 않은가 double도 실수다. 소수점 아래로 15자리까지 표현가능 ㅇㅇ float는 소수점 7자리까지 표현이 가능 float는 4byte; double은 8byte;
간단하게 설명하겠다 어차피 아는거라서 int는 4byte long long은 8byte 표현범위? -9223372036854775808 ~ 9223372036854775807이다. 엄청 많다. typedef long long ll; ll INF = 1318; 보통 Max값을 1e18로 정의해놓고 쓴다.
저번에는 재귀함수로 순열을 만들었다. 이번에는 반복문을 통해 순열을 만들어보자. 일단 코드를 봐보자. 사실 반복문은 쉽다. #include #include using namespace std; int main() { vector ret = {1, 2, 3}; for (int i = 0; i < 3; ++i) for (int j = 0; j < 3; ++j) for (int k = 0; k < 3; ++k) { if (i == j || j == k || k == i) continue; cout
오버플로우 흘럼넘친다라는 뜻이다. 컴퓨터에서는 어떤 타입의 허용범위를 넘으면 발생하는 에러를 오버플로우라고 한다. 예를 들어 signed int는 최대 Max치 허용범위는 2147483647이다. 21억4천7백4십8만3천6백4십7이다. 그렇다면 이 21억4천7백4십8만3천6백4십7을 벗어나는 숫자에 + 1을 하게되면 21억4천7백4십8만3천6백4십8이 아닌 - 21억4천7백4십8만3천6백4십8로 돌아가게 된다. 이를 예측할 수 없는 행동 즉 UB(Unexcpected Behavior)라고도 한다. 간단하게 코드로 봐보자. #include using namespace std; int main() { int a = 2147483647; cout
4byte짜리 정수를 사용할 때 쓰임 표현 범위는 -2147483648 ~ 2147483647 쉽게 말해서 -21억 ~ 21억이라 생각하자. 내가 C++을 복습하는 이유는 코테를 준비하고 있기 때문이다. 그래서 문제를 푸는 코드에 들어가있는 값들의 예상값이 20억을 넘어가면 int가 아닌 long long을 써야 한다. 아 참고로 2147483647은 2^31 - 1이다. 또한 문제를 풀 때에는 이상한 문제가 아니라면 int의 최대값으로 20억까지가 아닌 987654321 또는 1e9를 쓴다. const int INF = 987654321; const int INF2 = 1e9; 왜냐하면 이 최대치를 기반으로 오버플로우를 방지할 수 있는 장점이 있기 때문이다. int 연산 int로 선언한 변수 끼리 연산..