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. |
Verwandte Abschnitte
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.