@mulWithOverflow

@mulWithOverflow

곱셈을 하면서 정수 오버플로(overflow)가 났는지까지 한 번에 알아내는 내장 함수예요. 결괏값만 받는 a * b와 달리, 이 함수는 곱셈 결과와 함께 오버플로 여부를 나타내는 비트가 담긴 튜플을 돌려줘요.

출처: Zig Documentation

본문

@mulWithOverflow는 다음과 같은 시그니처를 가져요.

@mulWithOverflow(a: anytype, b: anytype) struct { @TypeOf(a, b), u1 }

a * b를 수행하고, 그 결과와 가능한 오버플로 비트(overflow bit)를 담은 튜플을 반환해요. 첫째 요소는 두 피연산자와 같은 타입(@TypeOf(a, b))의 곱셈 결과이고, 둘째 요소는 오버플로 여부를 나타내는 u1 비트예요. 이 비트가 1이면 값이 타입 범위를 넘어섰다는 뜻이에요.

곱셈 결과가 타입이 담을 수 있는 범위를 벗어날 수 있는 상황에서, 그 사실을 그냥 넘기지 않고 튜플로 잡아내고 싶을 때 쓰면 돼요.

더 알아보기

오버플로를 다루는 같은 계열의 내장 함수들이 더 있어요.