Wie würden Sie eine Variable auf die größtmögliche Anzahl in C setzen?
Wie würden Sie eine variable gleich unendlich (oder eine garantierte größte Zahl-Wert) in C?
InformationsquelleAutor der Frage Sam | 2010-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
EDIT: geantwortet, bevor die Frage geklärt, ich war nur raten, welche Art Sie wollte.
InformationsquelleAutor der Antwort dubiousjim
Gibt es eine Datei namens Grenzen.h (zumindest unter Linux gibt), hält diese Art von definition, z.B.
InformationsquelleAutor der Antwort amo-ej1
Bei weitem die einfachste Methode, um den größten Wert für einen vorzeichenlosen integer-Typ zu casten (-1) zu geben. Die Norm (§6.2.5/9) erfordert, dass nicht signierte Mathematik durchgeführt werden, die modulo einer Zahl die um eins größer als der größte Wert, der dargestellt werden kann, so für einen unsigned Typ
T
Ausdruck((T)-1)
unbedingt der größte mögliche Wert in diesem Typ.InformationsquelleAutor der Antwort Jerry Coffin
Basierend auf Ihre Kommentare, Sie wollen eine
unsigned int
(obwohl Sie sagen, "unsigned integer", so möchten Sie vielleicht ein fester Wert, nicht unbedingt einunsigned int
).In C, für vorzeichenlose Integrale Typ, der Wert
-1
bei der Konvertierung zu geben, ist garantiert größte Wert von diesem Typ:weisen die Werte
SIZE_MAX
UINT_MAX
undULONG_MAX
zu den Variablen, die jeweils. Im Allgemeinen sollten Sie auchlimits.h
und verwenden Sie die entsprechende makro -, aber es ist schön zu wissen, dass die Regel oben. AuchSIZE_MAX
ist nicht in C89, sosize_t size_max = -1;
arbeiten in C89 sowie C99.Beachten Sie, dass der überlauf garantiert ist nur für vorzeichenlose Integrale Typen.
InformationsquelleAutor der Antwort Alok Singhal
Da gibt es einen C++ - tag auf diese Frage, ich werde vorschlagen, numeric_limits:
InformationsquelleAutor der Antwort Fred Larson
Anderen tragbaren Weg, um maximaler Wert von unsigned - integer ist, um alle bits auf eins:
InformationsquelleAutor der Antwort Agnius Vasiliauskas
Normalerweise geschieht dies durch
1.0/0.0
aber möglicherweise erhalten Sie eine Warnung kompilieren. Ich bin mir nicht bewusst andere tragbare Möglichkeiten, es zu tun in C89, aber C99 hat makroFP_INFINITE
immath.h
.EDIT: Anscheinend ist Sam eigentlich nicht wollen, Unendlichkeit, sondern integer-Grenzen, die gefunden werden können, in
limits.h
wie andere gesagt haben.InformationsquelleAutor der Antwort Tronic
Ich in der Regel verwenden die *
_MAX
Makros gefunden inlimits.h
INT_MAX
für Integer usw. Diese immer richtig eingestellt für den Variablentyp. Auch die Größe explizit mit Typen wie uint32 werden entsprechende Einträge in dieser header-Datei.Dieser hat die Tugend, dass Sie den größten möglichen Wert, den eine variable dieses Typs aufnehmen kann.
Für eine vorzeichenlose Ganzzahl, als Sie fragte, für Ihre Frage, die Sie verwenden würden
UINT_MAX
InformationsquelleAutor der Antwort Andrew
Denke ich, Sie möchten vielleicht prüfen Sie diesen link aus:
Ich Tat dies, und es funktioniert gut auf gcc 4.4.1
InformationsquelleAutor der Antwort thelinuxer
BEISPIEL:
#include<math.h> //the header file which need to be included//
int a=INT_MAX; //Suppose "a" be that integer whose value you want largest//
InformationsquelleAutor der Antwort sachin pathak