C90: implizite Typwandlung double->int bei Zuweisung von int-Literalen?
-
Hi(gh)!
Gerade eben fällt mir mal wieder auf, dass ERLENKÖTTER in "C - Programmmieren von Anfang an" bei der Initialisierung von double- (oder auch float-) Variablen Ganzzahlen regelmäßig mit Nachkomma-Null schreibt, also etwa
double wert = 1.0;
Natürlich habe ich das Beispielprogramm erst mal ohne und dann mit Nachkomma-Null kompiliert und gestartet, das Ergebnis war auch mit -std=c90 identisch... wann besteht denn wirklich das Risiko einer ungewollten Typumwandlung von Fließkomma nach Integer, wenn man das Literal als Ganzzahl schreibt? Ist das womöglich plattformabhängig (und ich als Linuxer fein raus)?
Und noch was: was bringt es eigentlich, in Funktionen den Rückgabewert nach return in Klammern zu schreiben?
Bis bald im Khyberspace!
Yadgar
-
@Yadgar sagte in C90: implizite Typwandlung double->int bei Zuweisung von int-Literalen?:
Und noch was: was bringt es eigentlich, in Funktionen den Rückgabewert nach return in Klammern zu schreiben?
Nichts, da es kein Funktionsaufruf ist. Man sollte es daher einfach weglassen. Was das Thema Floatingpoint Literale betrifft. Das wird dann ein Thema, wenn Du z.B.
#include <stdlib.h> #include <stdio.h> int main() { double r1 = 1.0/3.0; double r2 = 1/3; printf("%f\n", r1); printf("%f\n", r2); return EXIT_SUCCESS; }
schreibst. Für
r2
wird nämlich eine Ganzzahldivision durchgeführt.