Grundlagen der Programmiersprache C

int a = 7, b = 2;
double x = a / b;
double y = (double)a / b;
printf("%.1f %.1f\n", x, y);

Welche Ausgabe erzeugt der obige Code mit einer Division zweier Ganzzahlen bei der Ausführung?

  1. A3.0 3.0
  2. B3.0 3.5
  3. C3.5 3.5
Antwort und Erläuterung anzeigen

Antwort: B. 3.0 3.5

a / b ist eine Division zweier int-Werte und damit eine Division ganzer Zahlen; die Nachkommastellen werden abgeschnitten, und das Ergebnis ist 3. Wird diese 3 in x vom Typ double geschrieben, ergibt sich nur 3,0; die abgeschnittenen 0,5 kommen nicht zurück. Bei y wird a zuerst in double umgewandelt (Cast), daher wird auch b in double umgewandelt; es findet eine Gleitkommadivision statt, und das Ergebnis ist 3,5. Wie gerechnet wird, bestimmt nicht der Typ des Ziels der Zuweisung, sondern der Typ der Operanden.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmiersprache C

  1. Welche Ausgabe erzeugt der obige Code mit Präfix- und Postfix-++ bei der Ausführung?
  2. Welche Ausgabe erzeugt der obige Code, in dessen if-Bedingung = steht, bei der Ausführung?
  3. Der obige Code soll prüfen, ob Bit 2 des Registerwerts reg gleich 1 ist. Was ergibt die Ausführung?
  4. uint8_t ist ein vorzeichenloser 8-Bit-Ganzzahltyp. Welche Ausgabe erzeugt der obige Code bei der Ausführung?
  5. uint8_t ist ein vorzeichenloser 8-Bit-Ganzzahltyp. Welche Ausgabe erzeugt der obige Code, der x zehnmal erhöht, bei der Ausführung?