wat is het verschil tussen uint16_t en unsigned short int in het geval van een 64-bits processor?

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:

  1. Als je een draagbaar niet-ondertekend 16-bits geheel getal wilt, gebruik je uint16_t.
  2. inttypes.h en stdint.h zijn beide geïntroduceerd in C99. Als u C89 gebruikt, definieert u uw eigen type.
  3. uint16_t wordt mogelijk niet geleverd in bepaalde implementaties (zie onderstaande referentie), maar unsigned 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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes