SafeInt 함수

SafeInt 라이브러리는 SafeInt 클래스 인스턴스를 만들지 않고도 사용할 수 있는 여러 함수를 제공합니다. 단일 수학 연산을 정수 오버플로에서 보호하려는 경우 이 함수를 사용할 수 있습니다. 여러 개의 수학 연산을 보호하려면 SafeInt 개체를 만들어야 합니다. 이러한 함수를 여러 번 사용하는 것보다 개체를 만드는 SafeInt 것이 더 효율적입니다.

이 함수를 사용하면 먼저 동일한 형식으로 변환하지 않고도 서로 다른 두 형식의 매개 변수를 비교하거나 수학 연산을 수행할 수 있습니다.

각 함수에 TU라는 두 가지 템플릿 형식이 있습니다. 두 형식은 각각 부울, 문자 또는 정수 형식일 수 있습니다. 정수 형식은 부호 있는 형식이나 부호 없는 형식으로, 8비트에서 64비트의 임의 크기일 수 있습니다.

참고 항목

이 라이브러리의 최신 버전은 https://github.com/dcleblanc/SafeInt에 있습니다.

섹션 내용

함수 설명
SafeAdd 두 숫자를 더하고 오버플로를 방지합니다.
SafeCast 한 형식의 매개 변수를 다른 형식으로 캐스팅합니다.
SafeDivide 두 숫자를 나누고 0으로 나누기를 방지합니다.
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals 두 숫자를 비교합니다. 이 함수를 사용하면 형식을 변경하지 않고도 서로 다른 두 형식의 숫자를 비교할 수 있습니다.
SafeModulus 두 숫자의 모듈러스 연산을 수행합니다.
SafeMultiply 두 숫자를 곱하고 오버플로를 방지합니다.
SafeSubtract 두 숫자를 빼고 오버플로를 방지합니다.
섹션 설명
SafeInt SafeInt 클래스
SafeIntException SafeInt 라이브러리와 관련된 예외 클래스입니다.

SafeAdd

오버플로를 방지하는 방식으로 두 숫자를 더합니다.

template<typename T, typename U>
inline bool SafeAdd (
   T t,
   U u,
   T& result
) throw ();

매개 변수

t
[in] 더할 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] 더할 두 번째 숫자입니다. U 형식이어야 합니다.

result
[out] SafeAdd에서 결과를 저장하는 매개 변수입니다.

Return Value

오류가 발생하지 않으면 true이고, 오류가 발생하면 false입니다.

SafeCast

한 형식의 숫자를 다른 형식으로 캐스팅합니다.

template<typename T, typename U>
inline bool SafeCast (
   const T From,
   U& To
);

매개 변수

From
[in] 변환할 소스 숫자입니다. T 형식이어야 합니다.

받는 사람
[out] 새 숫자 형식에 대한 참조입니다. U 형식이어야 합니다.

Return Value

오류가 발생하지 않으면 true이고, 오류가 발생하면 false입니다.

SafeDivide

0으로 나누기를 방지하는 방식으로 두 숫자를 나눕니다.

template<typename T, typename U>
inline bool SafeDivide (
   T t,
   U u,
   T& result
) throw ();

매개 변수

t
[in] 피제수입니다. T 형식이어야 합니다.

u
[in] 제수입니다. U 형식이어야 합니다.

result
[out] SafeDivide에서 결과를 저장하는 매개 변수입니다.

Return Value

오류가 발생하지 않으면 true이고, 오류가 발생하면 false입니다.

SafeEquals

두 숫자를 비교하여 같은지 여부를 확인합니다.

template<typename T, typename U>
inline bool SafeEquals (
   const T t,
   const U u
) throw ();

매개 변수

t
[in] 비교할 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] 비교할 두 번째 숫자입니다. U 형식이어야 합니다.

Return Value

truet와 u가 같으면 /&U이고, 그렇지 않으면 false.

설명

==가 두 가지 다른 형식의 숫자를 비교할 수 있게 해주기 때문에 이 메서드는 SafeEquals을 향상시켜 줍니다.

SafeGreaterThan

두 숫자를 비교합니다.

template<typename T, typename U>
inline bool SafeGreaterThan (
   const T t,
   const U u
) throw ();

매개 변수

t
[in] 비교할 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] 비교할 두 번째 숫자입니다. U 형식이어야 합니다.

Return Value

truet가 u보다 크면 false.입니다.

설명

SafeGreaterThan는 서로 다른 두 형식의 숫자를 비교할 수 있도록 하여 일반 비교 연산자를 확장합니다.

SafeGreaterThanEquals

두 숫자를 비교합니다.

template <typename T, typename U>
inline bool SafeGreaterThanEquals (
   const T t,
   const U u
) throw ();

매개 변수

t
[in] 비교할 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] 비교할 두 번째 숫자입니다. U 형식이어야 합니다.

Return Value

truet가 u보다 크거나 같으면 /&a0>이고, 그렇지 않으면 false.

설명

SafeGreaterThanEquals는 서로 다른 두 형식의 숫자를 비교할 수 있기 때문에 표준 비교 연산자를 개선합니다.

SafeLessThan

한 숫자가 다른 숫자보다 작은지 여부를 확인합니다.

template<typename T, typename U>
inline bool SafeLessThan (
   const T t,
   const U u
) throw ();

매개 변수

t
[in] 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] 두 번째 숫자입니다. U 형식이어야 합니다.

Return Value

truet가 u보다 작으면 .이고, 그렇지 않으면 false.입니다.

설명

이 메서드는 SafeLessThan을 사용하여 서로 다른 두 형식의 숫자를 비교할 수 있기 때문에 표준 비교 연산자를 개선합니다.

SafeLessThanEquals

두 숫자를 비교합니다.

template <typename T, typename U>
inline bool SafeLessThanEquals (
   const T t,
   const U u
) throw ();

매개 변수

t
[in] 비교할 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] 비교할 두 번째 숫자입니다. U 형식이어야 합니다.

Return Value

truet가 u보다 작거나 같으면 <a0/&a0>이고, 그렇지 않으면 false.

설명

SafeLessThanEquals는 서로 다른 두 형식의 숫자를 비교할 수 있도록 하여 일반 비교 연산자를 확장합니다.

SafeModulus

두 숫자의 모듈러스 연산을 수행합니다.

template<typename T, typename U>
inline bool SafeModulus (
   const T t,
   const U u,
   T& result
) throw ();

매개 변수

t
[in] 제수입니다. T 형식이어야 합니다.

u
[in] 피제수입니다. U 형식이어야 합니다.

result
[out] SafeModulus에서 결과를 저장하는 매개 변수입니다.

Return Value

오류가 발생하지 않으면 true이고, 오류가 발생하면 false입니다.

SafeMultiply

두 숫자를 곱하고 오버플로를 방지합니다.

template<typename T, typename U>
inline bool SafeMultiply (
   T t,
   U u,
   T& result
) throw ();

매개 변수

t
[in] 곱할 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] 곱할 두 번째 숫자입니다. U 형식이어야 합니다.

result
[out] SafeMultiply에서 결과를 저장하는 매개 변수입니다.

Return Value

오류가 발생하지 않으면 true이고, 오류가 발생하면 false입니다.

SafeNotEquals

두 숫자가 같지 않은지 확인합니다.

template<typename T, typename U>
inline bool SafeNotEquals (
   const T t,
   const U u
) throw ();

매개 변수

t
[in] 비교할 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] 비교할 두 번째 숫자입니다. U 형식이어야 합니다.

Return Value

truet와 u가 같지 않으면 /&U이고, 그렇지 않으면 false.

설명

!=가 두 가지 다른 형식의 숫자를 비교할 수 있게 해주기 때문에 이 메서드는 SafeNotEquals을 향상시켜 줍니다.

SafeSubtract

오버플로를 방지하는 방식으로 두 숫자를 뺍니다.

template<typename T, typename U>
inline bool SafeSubtract (
   T t,
   U u,
   T& result
) throw ();

매개 변수

t
[in] 빼기의 첫 번째 숫자입니다. T 형식이어야 합니다.

u
[in] t에서 뺄 숫자입니다. U 형식이어야 합니다.

result
[out] SafeSubtract에서 결과를 저장하는 매개 변수입니다.

Return Value

오류가 발생하지 않으면 true이고, 오류가 발생하면 false입니다.