Delen via


Conversies van ondertekende integrale typen

Wanneer een ondertekend geheel getal wordt geconverteerd naar een geheel getal of een drijvende-kommatype, wordt de waarde ongewijzigd als deze kan worden weergegeven in het resultaattype.

Wanneer een ondertekend geheel getal wordt geconverteerd naar een geheel getal van grotere grootte, wordt de waarde uitgebreid. Wanneer deze wordt geconverteerd naar een geheel getal van kleinere grootte, worden de bits met hoge volgorde afgekapt. Het resultaat wordt geïnterpreteerd met behulp van het resultaattype, zoals wordt weergegeven in dit voorbeeld:

int i = -3;
unsigned short u;

u = i;
printf_s( "%hu\n", u );  // Prints 65533

Wanneer de compiler een ondertekend geheel getal converteert naar een drijvendekommatype, als de oorspronkelijke waarde niet exact in het resultaattype kan worden weergegeven, is het resultaat de volgende hogere of lagere vertegenwoordigbare waarde.

Zie Opslag van basistypen voor informatie over de grootten van integrale en zwevende kommatypen.

De volgende tabel bevat een overzicht van conversies van ondertekende integrale typen. Hierbij wordt ervan uitgegaan dat het char type standaard is ondertekend. Als u een compileertijdoptie gebruikt om de standaardwaarde voor het char type te wijzigen in niet-ondertekend, zijn de conversies in de tabel Conversies van niet-ondertekende integrale typen voor het unsigned char type van toepassing, in plaats van de conversies in deze tabel.

Microsoft-specifieke

In de Microsoft-compiler int zijn deze long verschillende, maar gelijkwaardige typen. De conversie van een int waarde verloopt op dezelfde manier als de conversie van een long.

Microsoft-specifieke beëindigen

Tabel met conversies van ondertekende integrale typen

Van Tot Methode
char 1 short Sign-extend
char long Sign-extend
char long long Sign-extend
char unsigned char Patroon behouden; bit met hoge volgorde verliest de functie als teken-bit
char unsigned short Sign-extend to short; convert short to unsigned short
char unsigned long Sign-extend to long; convert long to unsigned long
char unsigned long long Sign-extend to long long; convert long long to unsigned long long
char float Vertegenwoordigen precies als float
char double Vertegenwoordigen precies als double
char long double Vertegenwoordigen precies als long double
short char Byte met lage volgorde behouden
short long Sign-extend
short long long Sign-extend
short unsigned char Byte met lage volgorde behouden
short unsigned short Bitpatroon behouden; bit met hoge volgorde verliest de functie als teken-bit
short unsigned long Sign-extend to long; convert long to unsigned long
short unsigned long long Sign-extend to long long; convert long long to unsigned long long
short float Vertegenwoordigen precies als float
short double Vertegenwoordigen precies als double
short long double Vertegenwoordigen precies als long double
long char Byte met lage volgorde behouden
long short Woord met lage volgorde behouden
long long long Sign-extend
long unsigned char Byte met lage volgorde behouden
long unsigned short Woord met lage volgorde behouden
long unsigned long Bitpatroon behouden; bit met hoge volgorde verliest de functie als teken-bit
long unsigned long long Sign-extend to long long; convert long long to unsigned long long
long float Vertegenwoordigen als float. Als long dit niet precies kan worden weergegeven, gaat een bepaalde precisie verloren.
long double Vertegenwoordigen precies als double
long long double Vertegenwoordigen precies als long double
long long char Byte met lage volgorde behouden
long long short Woord met lage volgorde behouden
long long long Dword met lage volgorde behouden
long long unsigned char Byte met lage volgorde behouden
long long unsigned short Woord met lage volgorde behouden
long long unsigned long Dword met lage volgorde behouden
long long unsigned long long Bitpatroon behouden; bit met hoge volgorde verliest de functie als teken-bit
long long float Vertegenwoordigen als float. Als long long dit niet precies kan worden weergegeven, gaat een bepaalde precisie verloren.
long long double Vertegenwoordigen als double. Als long long dit niet precies kan worden weergegeven als een double, gaat een bepaalde precisie verloren.
long long long double Vertegenwoordigen als double. Als long long dit niet precies kan worden weergegeven als een double, gaat een bepaalde precisie verloren.

1 Alle char vermeldingen gaan ervan uit dat het char type standaard is ondertekend.

Zie ook

Toewijzingsconversies