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