SafeInt 함수
SafeInt 라이브러리는 SafeInt 클래스 인스턴스를 만들지 않고도 사용할 수 있는 여러 함수를 제공합니다. 단일 수학 연산을 정수 오버플로에서 보호하려는 경우 이 함수를 사용할 수 있습니다. 여러 개의 수학 연산을 보호하려면 SafeInt
개체를 만들어야 합니다. 이러한 함수를 여러 번 사용하는 것보다 개체를 만드는 SafeInt
것이 더 효율적입니다.
이 함수를 사용하면 먼저 동일한 형식으로 변환하지 않고도 서로 다른 두 형식의 매개 변수를 비교하거나 수학 연산을 수행할 수 있습니다.
각 함수에 T
와 U
라는 두 가지 템플릿 형식이 있습니다. 두 형식은 각각 부울, 문자 또는 정수 형식일 수 있습니다. 정수 형식은 부호 있는 형식이나 부호 없는 형식으로, 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
true
t와 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
true
t가 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
true
t가 u보다 크거나 같으면 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
true
t가 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
true
t가 u보다 작거나 같으면 <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
true
t와 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
입니다.