그냥 게임개발자
암시적 형변환 본문
예를 들어 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와 int와의 연산이기에
unsigned int가나와서 아주 큰 양수가 나올 수도 있다.
조심해야 한다.
그렇다면 최대한 방지는 이렇다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> a = {1, 2, 3};
cout << a.size() - 10 << '\n';
return 0;
}

그리고 또한 타입변환시 주의해야 할 점이 또 있다.
int a = (int) p * 100
int a = (int) 100 * p
위 두개의 코드는 1번코드만 타입변환이 된다. 순서에 주의해야 한다.
내가 생각하기로는 p라는 변수가 int가 아닌 변수이기에 형변환이 되어서 타입변환이 된게 아닐까생각한다.
왜냐하면 100이라는 정수는 이미 int이기 때문이다.
끄읕
'내 개인적인 공부 > 알고리즘' 카테고리의 다른 글
그래프이론기초(1) - 정점, 간선 (0) | 2024.04.21 |
---|---|
배열과 포인터 Array to pointer decay (0) | 2024.04.05 |
반복문을 통한 순열 (0) | 2024.04.04 |
조합(Combination) (1) | 2024.04.02 |
순열 - 재귀함수로 만드는 순열 (0) | 2024.04.01 |