kies wrote:
> Also das mit dem runden ist mir noch nicht zun 100% klar ???
Nun, es soll eine Gleitkommazahl in ein Integer-Format konvertiert
werden. Nehmen wir mal an, der Ausgangswert sei 345,67. Bei der
Konvertierung nach "ganzzahlig" wird im Normalfall einfach der
Nachkommateil abgeschnitten und das, was vor dem Komma steht,
übernommen. Das wären in diesem Fall 345. Das ist aber nicht korrekt
gerundet. Deshalb wird vor der Typkonversion 0,5 hinzuaddiert, so dass
die Zahl 346,17 konvertiert wird, und das ergibt korrekt gerundet 346.
Wenn der Nachkommateil des Ausgangswertes kleiner als 0,5 ist, wird
nicht zur nächstgrößeren Ganzzahl aufgerundet, weil dann "Nachkommateil
+ 0,5" kleiner als 1 ist. Z.B. 345,45 wäre nach der Addition 345,95, und
das ist nach der Typkonversion (Abschneiden des Nachkommateils) 345,
also abgerundet.
Und zur Funktionsweise des Präprozessors:
Den Präprozessor interessieren nur Zeilen, die mit einer Raute (#)
beginnen. Nur diese Zeilen werden vom Präprozessor wirklich verarbeitet.
Alle anderen Zeilen (also auch die von Dir genannte) werden 1:1 so, wie
sie da stehen, dem Compiler übergeben. Deshalb rechnet der Präprozessor
da auch nichts.