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?