Basis van programmeren in C
struct { unsigned int x : 3; } s;
int v = 9;
s.x = v;
printf("%d\n", s.x);Wat is de uitvoer als de bovenstaande code, die 9 opslaat in een bitveld van 3 bits, wordt uitgevoerd?
- A1
- B7
- C9
Antwoord en toelichting tonen
Antwoord: A. 1
x is een bitveld zonder teken van 3 bits, dus het kan alleen 0 tot 7 weergeven. Een waarde opslaan die niet in een type zonder teken past, geeft de rest bij deling door 2³ = 8, dus 9 wordt 1. Bitvelden kunnen worden gebruikt om kleine waarden compact op te slaan, zoals instelvelden van registers of communicatievlaggen, maar details zoals de bitvolgorde van de velden verschillen per implementatie. gcc geeft een waarschuwing als de constante 9 rechtstreeks aan s.x wordt toegekend.