AFAIK, C ondersteunt slechts een paar gegevenstypen:
int, float, double, char, void enum.
Ik moet een nummer opslaan dat tot in de hoge 10 cijfers kan reiken. Aangezien ik een lage 10-cijferige # krijg van
INT_MAX
, ik denk dat ik een dubbele nodig heb.
<limits.h>
heeft geen DOUBLE_MAX
. Ik vond een DBL_MAX
op internet die zei dat dit LEGACY is en ook C++ lijkt te zijn. Is dubbel wat ik nodig heb? Waarom is er geen DOUBLE_MAX
?
Antwoord 1, autoriteit 100%
DBL_MAX
wordt gedefinieerd in <float.h>
. De beschikbaarheid ervan in <limits.h>
op unix is wat is gemarkeerd als “(LEGACY)”.
(link naar de unix-standaard hoewel je geen unix-tag hebt, omdat je daar waarschijnlijk de “LEGACY”-notatie hebt gevonden, maar veel van wat daar wordt getoond voor float.h is ook in de C-standaard terug naar C89)
Antwoord 2, autoriteit 44%
Je krijgt de integerlimieten in <limits.h>
of <climits>
. Kenmerken van drijvende komma’s worden gedefinieerd in <float.h>
voor C. In C++ is de voorkeursversie gewoonlijk std::numeric_limits<double>::max()
( waarvoor u #include <limits>
).
Wat uw oorspronkelijke vraag betreft, als u een groter integer-type wilt dan long
, moet u waarschijnlijk overwegen long long
. Dit is niet officieel opgenomen in C++ 98 of C++ 03, maar maakt deel uit van C99 en C++ 11, dus alle redelijk huidige compilers ondersteunen het.
Antwoord 3, Autoriteit 12%
Het is in de standaard float.h bevatten bestand. U wilt DBL_MAX
Antwoord 4, Autoriteit 8%
Gebruik double
Om grote gehele getallen op te slaan is twijfelachtig; Het grootste geheel getal dat betrouwbaar kan worden opgeslagen in double
is veel kleiner dan DBL_MAX
. U moet long long
, en als dat niet genoeg is, hebt u uw eigen arbitraire precisiecode of een bestaande bibliotheek nodig.
Antwoord 5, Autoriteit 5%
U zoekt de float.h
header.
Antwoord 6, Autoriteit 3%
INT_MAX
is slechts een definitie in limits.h . U maakt het niet duidelijk of u een geheel of zwevende puntwaarde wilt opslaan. Als geheel getal, en het gebruik van een 64-bits compiler, gebruikt u een long
(LLONG
voor 32-bits).