Grundlagen der Programmiersprache C
struct { unsigned int x : 3; } s;
int v = 9;
s.x = v;
printf("%d\n", s.x);Welche Ausgabe erzeugt der obige Code, der 9 in ein 3-Bit-Bitfeld schreibt, bei der Ausführung?
- A1
- B7
- C9
Antwort und Erläuterung anzeigen
Antwort: A. 1
x ist ein vorzeichenloses Bitfeld mit 3 Bit und kann nur 0 bis 7 darstellen. Ein Wert, der nicht in einen vorzeichenlosen Typ passt, wird zum Rest der Division durch 2³ = 8; aus 9 wird daher 1. Ein Bitfeld eignet sich, um kleine Werte wie Einstellfelder von Registern oder Kommunikations-Flags dicht gepackt zu halten, doch die Anordnung der Bits und Ähnliches hängt von der Implementierung ab. gcc warnt, wenn die Konstante 9 direkt s.x zugewiesen wird.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C