2016-04-14 4 views
-1

Meine Frage bezieht sich auf den folgenden Code, es ist ein klassisches Lehrbuch Beispiel:Was passiert, wenn dieser Code mit den Eingangsvariablen 0, 1, 2 und 3 ausgeführt wird?

#include <iostream> 
#include <limits> 

int main() 
{ 
    int min{std::numeric_limits<int>::max()}; ///These two limits 
    int max{std::numeric_limits<int>::min()}; 

    bool any(false); 
    int x; 

    while (std::cin >> x) 
    { 
     any=true; 
     if (x<min) 
      min = x; 

     if (x) 
      max=x; 
    } 

    if (any) 
     std::cout << "min = " << "\nmax = " max << '\n'; 
} 

Außerdem war ich neugierig, wie die Dokumentation zugreifen, die ich oben in meinem Kommentar beziehen sich auf die beiden Grenzen betrifft. Ist das etwas, das in der C-Standardbibliothek enthalten wäre?

Oder wäre es in der Dokumentation für die Input/Output-Stream-Bibliothek gefunden? In der Limit-Bibliothek auf cplusplus.com erwähnen die Entwickler, dass min = 0, wie ist das Maximum definiert? Wie in was sind die Parameter, die den maximalen Wert definieren und int könnte in jedem C++ - Programm haben?

+2

Holen Sie sich eine bessere [Referenz] (http://en.cppreference.com/w/cpp/types/numeric_limits). Obwohl, nichts unklar [hier] (http://www.cplusplus.com/reference/limits/numeric_limits/). – LogicStuff

+0

Was denkst du, was es bedeutet? Hast du versucht es herauszufinden? – rsjaffe

+1

min ist max und max ist min. Erinnert mich an meine Studentenzeit, als einer der Lieblingswitze '#define ij/* happy debugging * /' war. – SergeyA

Antwort

0

http://en.cppreference.com/w/cpp/types/numeric_limits http://www.cplusplus.com/reference/limits/numeric_limits/

Diese beiden Links führen zu Dokumentation über numerische Grenzen in der C++ Standard-Bibliothek.

"min()" ist nicht "null", es ist der niedrigste mögliche Wert, abhängig vom Typ, den Sie verwenden. Für einen int ist der Wert die niedrigste negative Zahl, INT_MIN (wahrscheinlich –2147483648), nicht Null. Für unsigned Typen ist es jedoch null. Bei einigen Typen kann es bedeuten, dass alle Bits auf 0 gesetzt sind, was den niedrigsten möglichen Wert ergibt. Für andere Arten ist es nicht so einfach.

"max()" ist der höchstmögliche Wert, den der Typ speichern kann. Für einige Datentypen bedeutet dies einfach, dass alle Bits auf 1 gesetzt sind, was Ihnen den höchstmöglichen Wert gibt. Für andere Typen ist es nicht so einfach, aber das Ergebnis ist immer der höchstmögliche Wert, den der Typ dennoch speichern/darstellen kann. Für int ist der höchstmögliche Wert INT_MAX, was höchstwahrscheinlich 2147483647 ist.

Durch Ihren Code gehen und genau erklären, was passiert, Schritt für Schritt, für die verschiedenen Eingabewerte fühlt sich außerhalb des Umfangs, hier, und klingt, als ob ich Hausaufgaben für Sie mache. Sie sollten den Code ausprobieren und sehen, was passiert.

+0

Also, wenn ich richtig verstehe, überprüft dieses Programm, dass die Zahl der Benutzereingabe passt in eine C++ - Integer-Variable –

+0

@AnisAliKhan Nein, es tut das nicht. Wie es geschrieben steht, ist das unmöglich zu machen. Die Eingabevariable wird in einem 'int' gespeichert. Wenn sie nicht passt, erhalten Sie eine Kürzung, und Sie werden nicht * wissen *, dass sie nicht in einen int passt. Dieses Programm ist im Grunde völliger Unsinn. – antiHUMAN

Verwandte Themen