Grundlagen der Programmiersprache C
unsigned char a = 200, b = 100;
int s = a + b;
unsigned char c = a + b;
printf("%d %d\n", s, c);unsigned char habe 8 Bit und int 32 Bit. Welche Ausgabe erzeugt der obige Code bei der Ausführung?
- A44 44
- B300 44
- C300 300
Antwort und Erläuterung anzeigen
Antwort: B. 300 44
In C werden Werte von Typen, die kleiner als int sind (char, short usw.), vor der Berechnung in int umgewandelt (Integer-Promotion). a + b wird daher nicht mit 8 Bit, sondern als int berechnet und ergibt 300, und s vom Typ int erhält unverändert 300. Bei der Zuweisung an das 8 Bit breite c wird der Wert in den Rest der Division durch 256 umgewandelt, also 44. Auch auf einem 8-Bit-Mikrocontroller werden Zwischenergebnisse eines Ausdrucks laut Standard mit der Breite von int berechnet.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C