Basis van programmeren in C
In embedded programma's wordt een variabele die de waarde van een 32-bits randapparaatregister bevat, vaak gedeclareerd met uint32_t uit stdint.h in plaats van unsigned int. Wat is de belangrijkste reden?
- Auint32_t keert niet terug naar 0 als een waarde het maximum overschrijdt, maar blijft op het maximum staan (verzadigt)
- BLees- en schrijfacties van een variabele die als uint32_t is gedeclareerd, worden niet meer door optimalisatie van de compiler weggelaten
- CDe grootte van unsigned int verschilt per implementatie, terwijl uint32_t is vastgelegd als een geheel getal zonder teken van precies 32 bits
Antwoord en toelichting tonen
Antwoord: C. De grootte van unsigned int verschilt per implementatie, terwijl uint32_t is vastgelegd als een geheel getal zonder teken van precies 32 bits
uint8_t, uint16_t, uint32_t, int32_t en dergelijke uit stdint.h zijn integertypen waarvan het aantal bits vastligt zoals de naam zegt (integertypen met vaste breedte). unsigned int kan 16 of 32 bits zijn, dus wie typen met vaste breedte gebruikt waar de breedte bij een register moet passen of waar een gegevensformaat voor communicatie wordt vastgelegd, behoudt de betekenis als de code naar een andere CPU wordt overgezet. Net als andere integertypen zonder teken krijgt uint32_t bij overloop de rest bij deling door 2³². Om te voorkomen dat lees- en schrijfacties worden weggelaten, wordt los van het type volatile toegevoegd.