Ik ben een variabele van het type uint16_t
gaan gebruiken, maar kan dat gegevenstype niet gebruiken vanwege mijn projectbeperkingen. Is het mogelijk om unsigned short int
te gebruiken in plaats van uint16_t
?
Ik ken het verschil tussen beide niet. Kan iemand het alsjeblieft verduidelijken?
Antwoord 1, autoriteit 100%
uint16_t
is een niet-ondertekend 16-bits geheel getal.
unsigned short int
is unsigned short integer, maar de grootte is afhankelijk van de implementatie. De standaard zegt alleen dat het minimaal 16-bit is (d.w.z. de minimumwaarde van UINT_MAX
is 65535
). In de praktijk is het meestal 16-bits, maar dat kun je niet als gegarandeerd beschouwen.
Opmerking:
- Als je een draagbaar niet-ondertekend 16-bits geheel getal wilt, gebruik je
uint16_t
. inttypes.h
enstdint.h
zijn beide geïntroduceerd in C99. Als u C89 gebruikt, definieert u uw eigen type.uint16_t
wordt mogelijk niet geleverd in bepaalde implementaties (zie onderstaande referentie), maarunsigned short int
is altijd beschikbaar.
Referentie: C11(ISO/IEC 9899:201x) 7.20 Integer-typen
Voor elk type dat hierin wordt beschreven en dat de implementatie biedt) moet die typedef-naam worden opgegeven en de bijbehorende macro’s worden gedefinieerd. Omgekeerd, voor elk type dat hierin wordt beschreven en dat niet door de implementatie wordt geleverd, zal die typedef-naam niet worden gedeclareerd en evenmin de bijbehorende macro’s definiëren. Een implementatie zal de typen leveren die worden beschreven als vereist , maar hoeft geen van de andere te bieden (beschreven als optioneel ).
Antwoord 2, autoriteit 39%
uint16_t
is gegarandeerd een geheel getal zonder teken dat 16 bits groot is
unsigned short int
is gegarandeerd een unsigned short integer
, waarbij short integer
wordt gedefinieerd door de compiler (en mogelijk compilervlaggen) u momenteel gebruikt. Voor de meeste compilers voor x86-hardware is een short integer
16 bits groot.
Houd er ook rekening mee dat per de ANSI C-standaard alleen de minimumgrootte van 16 bits is gedefinieerd , de maximale grootte is aan de ontwikkelaar van de compiler
Minimale typelimieten
Elke compiler die aan de norm voldoet, moet ook de
volgende limieten met betrekking tot het bereik van waarden in het bijzonder
type kan accepteren. Merk op dat dit ondergrenzen zijn: een implementatie
is vrij om een of al deze te overschrijden. Merk ook op dat het minimum
bereik voor een char is afhankelijk van het al dan niet overwegen van een char
ondertekend of niet ondertekend.Type minimumbereik
signed char -127 to +127 unsigned char 0 to 255 short int -32767 to +32767 unsigned short int 0 to 65535