maximaler Wert von int
Gibt es irgendeinen code zu finden, der maximale Wert der Ganzzahl (entsprechend dem compiler) in C/C++ wie Integer.MaxValue
Funktion in java?
InformationsquelleAutor der Frage d3vdpro | 2009-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
In C++:
dann verwenden
std::numeric_limits
ist eine Vorlage geben, die instanziiert werden können, die mit anderen Arten:In C:
dann verwenden
oder
InformationsquelleAutor der Antwort Gregory Pakosz
Ich weiß, es ist eine alte Frage, aber vielleicht kann jemand diese Lösung verwenden:
Bisher haben wir -1 als Ergebnis " bis Größe ist ein signed int.
Als Standard sagt, bits verschoben sind 1, wenn die variable unterzeichnet ist und negativ ist, und 0, wenn die variable wäre nicht signierte oder signierte und positiv.
Als Größe signiert ist, und negativ, würden wir verlagern in Vorzeichen-bit, das 1 ist, dem ist nicht zu helfen, viel, also wir casten auf unsigned int, zwingen zur Verschiebung 0 statt -, setting-das Vorzeichen-bit auf 0 während der Vermietung alle anderen bits bleiben 1.
Könnten wir auch eine Maske verwenden, und xor, aber dann mussten wir wissen, die genaue bitsize der Variablen. Mit der Verschiebung der bits vor, die wir nicht haben, um jederzeit zu wissen, wie viele bits der int hat an der Maschine oder compiler, noch müssen wir zusätzliche Bibliotheken.
InformationsquelleAutor der Antwort MJeB
InformationsquelleAutor der Antwort
Warum schreiben Sie nicht ein Stück code wie:
InformationsquelleAutor der Antwort Prabhu
Hier ist ein makro verwende ich, um den maximalen Wert für signed integers, die unabhängig von der Größe der Ganzzahl-Typ verwendet, und für die gcc -Woverflow nicht beschweren,
InformationsquelleAutor der Antwort Philippe De Muyter
O. K. ich weder rep Kommentar auf Vorherige Antwort (von Philippe De Muyter) noch erhöhen, score, also ein neues Beispiel, mit seinem definieren für SIGNED_MAX trivial erweitert für unsigned-Typen:
Anders als mit diesem oder diesen header, hier verwenden wir den real-Typ vom compiler.
InformationsquelleAutor der Antwort A. Genchev
Für den bestimmten maximalen Wert von intich in der Regel schreiben die hexadezimale notation:
statt der unregelmäßigen dezimal Wert:
InformationsquelleAutor der Antwort Hao
Was
(1 << (8*sizeof(int)-2)) - 1 + (1 << (8*sizeof(int)-2))
.Dies ist das gleiche wie
2^(8*sizeof(int)-2) - 1 + 2^(8*sizeof(int)-2)
.Wenn
sizeof(int) = 4 => 2^(8*4-2) - 1 + 2^(8*4-2) = 2^30 - 1 + 20^30 = (2^32)/2 - 1 [max signed int of 4 bytes]
.Können Sie nicht verwenden
2*(1 << (8*sizeof(int)-2)) - 1
weil es überlaufen wird, aber(1 << (8*sizeof(int)-2)) - 1 + (1 << (8*sizeof(int)-2))
funktioniert.InformationsquelleAutor der Antwort izanbf1803