값의 역할은?
개수, 측정값, 문자, 조건 중 무엇인지 먼저 나눈다.
“숫자니까 int”처럼 고르지 말고, 값이 무엇을 뜻하는지부터 확인하면 오버플로와 실수 비교 오류를 줄일 수 있다.
개수, 측정값, 문자, 조건 중 무엇인지 먼저 나눈다.
입력값뿐 아니라 중간 계산값까지 범위를 계산한다.
음수가 의미 없을 때만 unsigned를 검토한다.
실수라면 정밀도와 비교 기준을 함께 정한다.
크기와 범위는 실제 컴파일 환경에서 확인한다.
| 상황 | 시작 타입 | 바꿔야 하는 신호 | 검증 방법 |
|---|---|---|---|
| 일반 정수 | int |
합계나 곱셈 결과가 범위를 넘을 수 있음 | numeric_limits<int> |
| 큰 정수 | long long |
파일/네트워크 형식과 크기를 맞춰야 함 | 고정폭 타입과 직렬화 규칙 확인 |
| 실수 계산 | double |
메모리 대역폭이 중요하거나 정밀도가 더 필요함 | 오차 허용치와 출력 자릿수 확인 |
| 문자/상태 | char, bool |
문자 인코딩, 다국어, 상태 개수가 늘어남 | 인코딩 타입과 enum 사용 여부 확인 |
뺄셈 결과가 0보다 작아질 수 있으면 unsigned가 오히려 버그를 숨긴다.
0.1 + 0.2 == 0.3처럼 직접 비교하면 오차가 드러난다.
long, bool, long double은 환경별 차이가 날 수 있다.