Verwendung von INT_MAX und INT_MIN in C/C++

In diesem Artikel werden wir uns die Verwendung von INT_MAX und INT_MIN in C/C++ ansehen.

Dies sind tatsächlich nützliche Makros, die die maximalen und minimalen Ganzzahlwerte darstellen.

Lassen Sie uns dies anhand einiger Beispiele betrachten.

Verwendung von INT_MAX und INT_MIN

INT_MAX ist ein Makro, das den maximalen Ganzzahlwert darstellt. Ähnlich stellt INT_MIN den minimalen Ganzzahlwert dar.

Diese Makros sind in der Headerdatei <limits.h> definiert, daher müssen Sie diese einbinden.

#include <limits.h>
INT_MAX
INT_MIN

Beachten Sie, dass jede Ganzzahlvariable zwischen INT_MIN und INT_MAX liegen muss.

Typischerweise werden Ganzzahlen als 4 Bytes (32 Bit) gespeichert.

Dies bedeutet, dass auf fast allen Maschinen der maximale Ganzzahlwert 2^(31) – 1 = +2147483647 sein wird.

Der minimale Ganzzahlwert wird -(2^31) = -2147483648 sein

Lassen Sie uns dies für unsere Maschine überprüfen.

#include <stdio.h>
#include <limits.h>

int main() {
    printf("Maximaler Ganzzahlwert: %d\n", INT_MAX);
    printf("Minimaler Ganzzahlwert: %d\n", INT_MIN);
    return 0;
}

Output

Maximum Integer Value: 2147483647
Minimum Integer Value: -2147483648

Tatsächlich erhalten wir, was wir vorhergesagt haben.

Beispiel für Ganzzahlüberlauf und -unterlauf

Lassen Sie uns nun ein weiteres Beispiel nehmen, um einen möglichen Ganzzahlüberlauf oder -unterlauf korrekt vorherzusagen.

#include <stdio.h>
#include <limits.h>

int main() {
    int value = 0;
    while (value >= 0) {
        // Check for overflow
        if (value == INT_MAX) {
            printf("value = %d. Possible overflow!\n", value);
        }
        value ++;
    }
    printf("Now, value = %d\n", value);
    value = 0;
    while (value <= 0) {
        // Check for underflow
        if (value == INT_MIN) {
            printf("value = %d. Possible underflow!\n", value);
        }
        value --;
    }
    printf("Now, value = %d\n", value);
    return 0;
}

Output

value = 2147483647. Possible overflow!
Now, value = -2147483648
value = -2147483648. Possible underflow!
Now, value = 2147483647

Obwohl dies einige Sekunden dauert, macht es tatsächlich, was wir erwarten.

Die Ganzzahl wird zu INT_MIN überlaufen und zu INT_MAX unterlaufen.

Dies ist nützlich, um solche Sprünge in den Werten zu erkennen.

INT_MAX und INT_MIN: Warum brauchen wir diese Makros?

Häufig ist es für bestimmte Algorithmen manchmal notwendig, eine Variable als den niedrigsten/höchsten Wert zu initialisieren.

Die Anzahl der Bits des Datentyps kann je nach Maschine unterschiedlich sein.

Um die Verwendung der maximalen/minimalen Werte konsistent zu gestalten, wäre es praktisch, wenn jeder dieselben Makros verwenden könnte!

Dies ist genau der Grund, warum solche Arten von Makros existieren

  • Um Sie davon zu befreien, sich die tatsächlichen Werte zu merken
  • Konsistente Programmiermuster auf allen Maschinen zu haben
  • Sehr praktisch in der Verwendung

Hoffentlich überzeugen Sie diese Gründe, solche Arten von Makros zu verwenden, wann immer Sie Ihre eigene C/C++-Bibliothek erstellen und wie Sie sie anwenden?

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: