Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een drijvende-kommawaarde die wordt geconverteerd naar een ander type drijvende komma, ondergaat geen wijziging in waarde als de oorspronkelijke waarde exact in het resultaattype kan worden weergegeven. Als de oorspronkelijke waarde numeriek is, maar niet exact kan worden weergegeven, is het resultaat ofwel de volgende hogere of volgende lagere vertegenwoordigbare waarde. Zie Limieten voor drijvendekommageconstanten voor het bereik van typen drijvende komma.
Een drijvendekommawaarde die wordt geconverteerd naar een integraal type, wordt eerst afgekapt door eventuele breukwaarden te negeren. Als deze afgekapte waarde in het resultaattype wordt weergegeven, moet het resultaat die waarde zijn. Wanneer deze niet kan worden vertegenwoordigd, is de resultaatwaarde niet gedefinieerd.
Microsoft-specifieke
Microsoft-compilers gebruiken IEEE-754 binaire32-weergave voor float waarden en binaire64-weergave voor long double en double. Omdat long double ze double dezelfde weergave gebruiken, hebben ze hetzelfde bereik en dezelfde precisie.
Wanneer de compiler een double of long double drijvendekommagetal converteert naar een float, rondt het het resultaat af op basis van de besturingselementen voor de drijvendekommaomgeving, die standaard 'rond naar dichtstbijzijnd, is gekoppeld aan even'. Als een numerieke waarde te hoog of te laag is om te worden weergegeven als een numerieke float waarde, is het conversieresultaat positief of negatief oneindig volgens het teken van de oorspronkelijke waarde en wordt er een overloopuitzondering gegenereerd, indien ingeschakeld.
Het resultaat van een conversie naar een integraal type kleiner dan long is het resultaat van het converteren van de waarde naar longen vervolgens converteren naar het resultaattype.
Voor conversie naar gehele getallen kan longeen conversie van een waarde die te hoog of te laag is om weer te geven in het resultaattype een van de volgende waarden retourneren:
Het resultaat kan een sentinel-waarde zijn, die de vertegenwoordigbare waarde is die het meest van nul is. Voor ondertekende typen is dit de laagste vertegenwoordigbare waarde (0x800... 0). Voor niet-ondertekende typen is dit de hoogste vertegenwoordigbare waarde (0xFF... F).
Het resultaat kan verzadigd zijn, waarbij waarden die te hoog zijn om weer te geven, worden geconverteerd naar de hoogste vertegenwoordigbare waarde. Waarden die te laag zijn om weer te geven, worden geconverteerd naar de laagste vertegenwoordigbare waarde. Een van deze twee waarden wordt ook gebruikt als de sentinel-waarde.
Voor conversie naar
unsigned longofunsigned long longkan het resultaat van het converteren van een waarde buiten het bereik een andere waarde zijn dan de hoogste of laagste vertegenwoordigbare waarde. Of het resultaat nu een sentinel- of verzadigingswaarde is of niet afhankelijk is van de compileropties en doelarchitectuur. Toekomstige compilerreleases kunnen in plaats daarvan een verzadigings- of sentinel-waarde retourneren.
Microsoft-specifieke beƫindigen
De volgende tabel bevat een overzicht van conversies van zwevende typen.
Tabel met conversies van typen drijvende komma
| Van | Tot | Methode |
|---|---|---|
float |
char |
Converteren naar longen vervolgens converteren long naar char |
float |
short |
Converteren naar longen vervolgens converteren long naar short |
float |
int |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als int, is het resultaat niet gedefinieerd. |
float |
long |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als long, is het resultaat niet gedefinieerd. |
float |
long long |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als long long, is het resultaat niet gedefinieerd. |
float |
unsigned char |
Converteren naar longen vervolgens converteren long naar unsigned char |
float |
unsigned short |
Converteren naar longen vervolgens converteren long naar unsigned short |
float |
unsigned |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als unsigned, is het resultaat niet gedefinieerd. |
float |
unsigned long |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als unsigned long, is het resultaat niet gedefinieerd. |
float |
unsigned long long |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als unsigned long long, is het resultaat niet gedefinieerd. |
float |
double |
Vertegenwoordigen als een double. |
float |
long double |
Vertegenwoordigen als een long double. In MSVC long double en double dezelfde weergave hebben. |
double |
char |
Converteren naar floaten vervolgens converteren float naar char |
double |
short |
Converteren naar floaten vervolgens converteren float naar short |
double |
int |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als int, is het resultaat niet gedefinieerd. |
double |
long |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als long, is het resultaat niet gedefinieerd. |
double |
unsigned char |
Converteren naar longen vervolgens converteren long naar unsigned char |
double |
unsigned short |
Converteren naar longen vervolgens converteren long naar unsigned short |
double |
unsigned |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als unsigned, is het resultaat niet gedefinieerd. |
double |
unsigned long |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als unsigned long, is het resultaat niet gedefinieerd. |
double |
unsigned long long |
Afkappen bij decimaalteken. Als het resultaat te groot is om te worden weergegeven als unsigned long long, is het resultaat niet gedefinieerd. |
double |
float |
Vertegenwoordigen als een float. Als de double waarde niet exact kan worden weergegeven als float, treedt er verlies van precisie op. |
double |
long double |
De long double waarde wordt behandeld als double. |
Conversies van long double volgen dezelfde methode als conversies van double.