Freigeben über


SafeInt-Funktionen

Die SafeInt-Bibliothek stellt mehrere Funktionen bereit, die Sie verwenden können, ohne eine Instanz der SafeInt-Klasse zu erstellen. Wenn Sie einen einzelnen mathematischen Vorgang vor Ganzzahlüberlauf schützen möchten, können Sie diese Funktionen verwenden. Wenn Sie mehrere mathematische Vorgänge schützen möchten, sollten Sie SafeInt-Objekte erstellen. Es ist effizienter, Objekte zu erstellen SafeInt , als diese Funktionen mehrmals zu verwenden.

Mit diesen Funktionen können Sie mathematische Operationen mit zwei verschiedenen Typen von Parametern vergleichen oder ausführen, ohne sie zuerst in denselben Typ konvertieren zu müssen.

Jede dieser Funktionen hat zwei Vorlagentypen: T und U. Jeder dieser Typen kann ein boolescher Wert, Zeichen oder integraler Typ sein. Integrale Typen können mit oder ohne Vorzeichen sein und eine beliebige Größe von 8 Bits bis 64 Bits haben.

Hinweis

Die neueste Version dieser Bibliothek befindet sich unter https://github.com/dcleblanc/SafeInt.

In diesem Abschnitt

Funktion Beschreibung
SafeAdd Addiert zwei Zahlen und schützt vor Überlauf.
safecast Wandelt einen Parametertyp in einen anderen Typ um.
SafeDivide Dividiert zwei Zahlen und schützt vor Division durch 0 (null).
SafeEquals, SafeGreaterThan, SafeGreaterThanEquals, SafeLessThan, SafeLessThanEquals, SafeNotEquals Vergleicht zwei Zahlen. Mit diesen Funktionen können Sie zwei verschiedene Typen von Zahlen vergleichen, ohne ihre Typen zu ändern.
SafeModulus Führt die Modulooperation für zwei Zahlen durch.
SafeMultiply Multipliziert zwei Zahlen miteinander und schützt vor Überlauf.
SafeSubtract Subtrahiert zwei Zahlen und schützt vor Überlauf.
Abschnitt Beschreibung
SafeInt Die SafeInt-Klasse.
SafeIntException Die Exception-Klasse, die für die SafeInt-Bibliothek spezifisch ist.

SafeAdd

Addiert zwei Zahlen in einer Weise, die vor Überlauf schützt.

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

Parameter

t
[in] Die erste zu addierende Zahl. Muss vom Typ T sein.

n
[in] Die zweite zu addierende Zahl. Muss vom Typ U sein.

result
[out] Der Parameter, in dem SafeAdd das Ergebnis speichert.

Rückgabewert

true, wenn kein Fehler auftritt; false, wenn ein Fehler auftritt.

SafeCast

Wandelt einen Zahlentyp in einen anderen Typ um.

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

Parameter

Von
[in] Die zu konvertierende Quellzahl. Muss vom Typ T sein.

An
[out] Ein Verweis auf den neuen Zahlentyp. Muss vom Typ U sein.

Rückgabewert

true, wenn kein Fehler auftritt; false, wenn ein Fehler auftritt.

SafeDivide

Dividiert zwei Zahlen in einer Weise, die vor Division durch 0 (null) schützt.

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

Parameter

t
[in] Der Dividend. Muss vom Typ T sein.

n
[in] Der Divisor. Muss vom Typ U sein.

result
[out] Der Parameter, in dem SafeDivide das Ergebnis speichert.

Rückgabewert

true, wenn kein Fehler auftritt; false, wenn ein Fehler auftritt.

SafeEquals

Vergleicht zwei Zahlen, um zu bestimmen, ob sie gleich sind.

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

Parameter

t
[in] Die erste zu vergleichende Zahl. Muss vom Typ T sein.

n
[in] Die zweite zu vergleichende Zahl. Muss vom Typ U sein.

Rückgabewert

true wenn t und u gleich sind; andernfalls false.

Hinweise

Die Methode verbessert ==, da Sie mit SafeEquals zwei verschiedene Typen von Zahlen vergleichen können.

SafeGreaterThan

Vergleicht zwei Zahlen.

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

Parameter

t
[in] Die erste zu vergleichende Zahl. Muss vom Typ T sein.

n
[in] Die zweite zu vergleichende Zahl. Muss vom Typ U sein.

Rückgabewert

true wenn t größer als u ist; andernfalls false.

Hinweise

SafeGreaterThan erweitert den regulären Vergleichsoperator, da Sie damit zwei verschiedene Typen von Zahlen vergleichen können.

SafeGreaterThanEquals

Vergleicht zwei Zahlen.

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

Parameter

t
[in] Die erste zu vergleichende Zahl. Muss vom Typ T sein.

n
[in] Die zweite zu vergleichende Zahl. Muss vom Typ U sein.

Rückgabewert

true wenn t größer als oder gleich u ist; andernfalls false.

Hinweise

SafeGreaterThanEquals verbessert den Standardvergleichsoperator, da Sie damit zwei verschiedene Typen von Zahlen vergleichen können.

SafeLessThan

Bestimmt, ob eine Zahl kleiner als eine andere ist.

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

Parameter

t
[in] Die erste Zahl. Muss vom Typ T sein.

n
[in] Die zweite Zahl. Muss vom Typ U sein.

Rückgabewert

true wenn t kleiner als u ist; andernfalls false.

Hinweise

Diese Methode verbessert den Standardvergleichsoperator, da Sie mit SafeLessThan zwei verschiedene Typen von Zahlen vergleichen können.

SafeLessThanEquals

Vergleicht zwei Zahlen.

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

Parameter

t
[in] Die erste zu vergleichende Zahl. Muss vom Typ T sein.

n
[in] Die zweite zu vergleichende Zahl. Muss vom Typ U sein.

Rückgabewert

true wenn t kleiner als oder gleich u ist; andernfalls false.

Hinweise

SafeLessThanEquals erweitert den regulären Vergleichsoperator, da Sie damit zwei verschiedene Typen von Zahlen vergleichen können.

SafeModulus

Führt die Modulooperation für zwei Zahlen durch.

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

Parameter

t
[in] Der Divisor. Muss vom Typ T sein.

n
[in] Der Dividend. Muss vom Typ U sein.

result
[out] Der Parameter, in dem SafeModulus das Ergebnis speichert.

Rückgabewert

true, wenn kein Fehler auftritt; false, wenn ein Fehler auftritt.

SafeMultiply

Multipliziert zwei Zahlen in einer Weise miteinander, die vor Überlauf schützt.

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

Parameter

t
[in] Die erste zu multiplizierende Zahl. Muss vom Typ T sein.

n
[in] Die zweite zu multiplizierende Zahl. Muss vom Typ U sein.

result
[out] Der Parameter, in dem SafeMultiply das Ergebnis speichert.

Rückgabewert

true, wenn kein Fehler auftritt; false, wenn ein Fehler auftritt.

SafeNotEquals

Bestimmt, ob zwei Zahlen nicht gleich sind.

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

Parameter

t
[in] Die erste zu vergleichende Zahl. Muss vom Typ T sein.

n
[in] Die zweite zu vergleichende Zahl. Muss vom Typ U sein.

Rückgabewert

true wenn nicht und u nicht gleich sind; andernfalls false.

Hinweise

Die Methode verbessert !=, da Sie mit SafeNotEquals zwei verschiedene Typen von Zahlen vergleichen können.

SafeSubtract

Subtrahiert zwei Zahlen in einer Weise, die vor Überlauf schützt.

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

Parameter

t
[in] Die erste Zahl in der Subtraktion. Muss vom Typ T sein.

n
[in] Die von t zu subtrahierende Zahl. Muss vom Typ U sein.

result
[out] Der Parameter, in dem SafeSubtract das Ergebnis speichert.

Rückgabewert

true, wenn kein Fehler auftritt; false, wenn ein Fehler auftritt.