거의 항상 부호 없는 정수를 써야 한다

Almost Always Unsigned

대부분의 정수는 음수 값을 표현할 필요가 없음에도 불구하고, 많은 프로그래머가 습관적으로 부호 있는 정수를 사용한다. 이 글은 C, C++, Go, Rust, Odin 등 다양한 언어에서 부호 없는 정수의 사용을 옹호하며, 흔한 반대 논거(안전성, 역방향 루프, 두 수의 차, 인덱스 계산, 곱셈 오버플로, 센티널 값)가 대부분 잘못되었음을 주장한다. 특히 부호 있는 정수는 오버플로 시 정의되지 않은 동작(undefined behavior)을 유발할 수 있어 오히려 더 위험하다. 부호 없는 정수의 래핑 동작을 이해하고 적절한 관용구를 사용하면 더 안전하고 효율적인 코드를 작성할 수 있다.

부호 없는 정수의 언더플로는 C와 C++에서 잘 정의되어 있으며, 우리는 래핑 산술의 동작을 가르쳐야 한다. 이는 일반적으로 유용할 뿐만 아니라 역방향 반복도 순방향만큼 쉽게 만든다.

이 날의 다른 글

2026-07-08