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?
- A3.0 3.0
- B3.0 3.5
- 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.
Weiter: 9 weitere Fragen zu Grundlagen der Programmiersprache C