Basis van programmeren in C
int a = 7, b = 2;
double x = a / b;
double y = (double)a / b;
printf("%.1f %.1f\n", x, y);Wat is de uitvoer als de bovenstaande code, die een deling van gehele getallen bevat, wordt uitgevoerd?
- A3.0 3.0
- B3.0 3.5
- C3.5 3.5
Antwoord en toelichting tonen
Antwoord: B. 3.0 3.5
a / b deelt een int door een int, dus het is een deling van gehele getallen die 3 geeft, waarbij het deel achter de komma wordt weggelaten. Die 3 in de double x zetten maakt er alleen 3,0 van; de weggelaten 0,5 komt niet terug. Bij y wordt a eerst naar double omgezet (een cast), dus wordt ook b naar double omgezet, gebeurt de deling met drijvende komma en is het resultaat 3,5. Hoe de berekening wordt uitgevoerd, wordt bepaald door de typen van de operanden, niet door het type van het doel van de toekenning.