Grundlagen der Programmiersprache C
uint8_t x = 250;
for (int i = 0; i < 10; i++)
x++;
printf("%d\n", x);uint8_t ist ein vorzeichenloser 8-Bit-Ganzzahltyp. Welche Ausgabe erzeugt der obige Code, der x zehnmal erhöht, bei der Ausführung?
- A4
- B255
- C260
Antwort und Erläuterung anzeigen
Antwort: A. 4
uint8_t kann 0 bis 255 darstellen. Der Standard legt fest, dass ein Wert, der nicht in einen vorzeichenlosen Ganzzahltyp passt, zum Rest der Division durch 2⁸ = 256 wird; erhöht man ab 250 schrittweise um 1, folgt auf 255 daher wieder 0. Nach zehn Erhöhungen ergibt sich der Rest von 250 + 10 = 260 geteilt durch 256, also 4. Dagegen ist ein Überlauf bei Berechnungen mit vorzeichenbehafteten Ganzzahltypen undefiniertes Verhalten.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C