더북(TheBook)

TAKEAWAY 4.6 size_t에 대한 산술 연산을 수행할 때는 암묵적으로 % (SIZE_MAX+1)이 적용된다.

TAKEAWAY 4.7 부호 없는 타입에 대한 산술 연산 과정에서 오버플로가 발생하면 구간의 시작점으로 되돌아간다.

다시 말해 size_t 값이 SIZE_MAX + 1이면 0이 되고, 0 - 1의 결과는 SIZE_MAX가 된다.

- 연산자가 부호 없는 타입에 적용될 때는 이렇게 시작점으로 되돌아가는 현상이 발생한다. 예를 들어 size_t 타입에서 -1이란 값은 SIZE_MAX와 같다. 따라서 a-1을 더한 결과는 a + SIZE_MAX가 되고, 이 값은 구간의 시작점으로 되돌아가서 다음과 같은 결과가 나온다.

a + SIZE_MAX - (SIZE_MAX+1) = a - 1

/% 연산을 수행한 결과는 항상 피연산자보다 작거나 같다.

TAKEAWAY 4.8 부호 없는 타입에 대한 /와 % 연산의 결과는 항상 피연산자보다 작다.

따라서 다음도 성립한다.

TAKEAWAY 4.9 부호 없는 /% 연산에서는 오버플로가 발생하지 않는다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.