Anhang G
Eigenschaften von Datentypen
Kleines Beispielprogramm zur Ermittlung einiger Eigenschaften von Datentypen (Anwendung siehe Kommentar in main()).
// Ermittelt einige Eigenschaften von Datentypen
#include <iostream>
#include <limits>
using std::cout;
using std::endl;
using std::boolalpha;
// Ausgabe einiger Kenndaten für numerische Datentypen
template<typename T> void PrintNumLimits()
{
// bool-Werte als true/false ausgeben anstelle von 1/0
cout << boolalpha;
// Überpruefen ob Kenndaten vorliegen
if (std::numeric_limits<T>::is_specialized == 0)
{
cout << "keine numeric_limits Angaben vorhanden!\n";
return;
}
// Kenndaten ausgeben
cout << "Min: " << std::numeric_limits<T>::min();
cout << "\nMax: " << std::numeric_limits<T>::max();
cout << "\nAnzahl Bits (ohne Vorzeichen):"
<< std::numeric_limits<T>::digits;
cout << "\nVorzeichenbehaftet: "
<< std::numeric_limits<T>::is_signed;
cout << "\nInteger: "
<< std::numeric_limits<T>::is_integer;
cout << "\nkeine Rundungsfehler moeglich: "
<< std::numeric_limits<T>::is_exact;
cout << "\nkleinster von 1 abweichender Wert: "
<< std::numeric_limits<T>::epsilon() << endl;
}
int main()
{
// Innerhalb der spitzen Klammer den Datentyp angeben,
// für den die Kenndaten ausgegeben werden sollen
PrintNumLimits<long>();
}
Min: -2147483648
Max: 2147483647
Anzahl Bits (ohne Vorzeichen):31
Vorzeichenbehaftet: true
Integer: true
keine Rundungsfehler moeglich: true
kleinster von 1 abweichender Wert: 0