Sythus Geschrieben 13. August 2007 Geschrieben 13. August 2007 Hallo liebe Community, bin neu hier und möcht mich gleich mal beteiligen - habe zwar kein wirkliches Problem aber eine Frage. #include <stdio.h> int main() { [COLOR="Red"]double[/COLOR] a=123.456,b=76.543; printf("a + b = %f\n\n", a+; return 0; }[/code] Dies ist nur ein Beispielprogramm in dem ich mit Gleitpunktzahlen herumexperimentiert hab. Ich hatte erst den Datentyp float, doch da spuckte er 2 Warnungen aus. Frage mich aber warum, float ist kleiner als double und kann 6 stellen wiedergeben. Trotzdem meckert er. Kann mir jemand sagen warum? Grüße Sythus Zitieren
nic_power Geschrieben 13. August 2007 Geschrieben 13. August 2007 Hallo, wie sieht die genaue Warnung aus und mit welchem Compiler unter welchem Betriebssystem arbeitest Du? Nic Zitieren
Sythus Geschrieben 13. August 2007 Autor Geschrieben 13. August 2007 Die Warnung: warning C4305: 'initializing' : Verkuerzung von 'const double' in 'float' Ich arbeite mit Microstoft Visual c++ 6.0, Windows XP Zitieren
Guybrush Threepwood Geschrieben 13. August 2007 Geschrieben 13. August 2007 In welcher Zeile kommt die denn? Wenn es die printf Zeile ist dann liegt es an der Ungenauigkeit von Gleitkommazahlen. Das heißt das bei der Addition von a und b ein Ergebnis rauskäme das größer ist als der Wertebereicht von float. Zitieren
marcom Geschrieben 13. August 2007 Geschrieben 13. August 2007 Die Zahlen 123.456 bzw. 76.543 sind doubles. Willst du ausdrücklich ein float, schreib ein "f" als suffix also: float a=123.456f, b =76.543f; Damit sagst du dem Compiler dass du dich nicht verschrieben hast sondern wirklich nur 4 byte belegen willst. Zitieren
maddin Geschrieben 14. August 2007 Geschrieben 14. August 2007 Ist aber auch wieder Compilerabhängig. Also beim MSVS das 'f' angewöhnen, die Warnung ignorieren oder die Warnung deaktivieren. Zitieren
Klotzkopp Geschrieben 15. August 2007 Geschrieben 15. August 2007 Ist aber auch wieder Compilerabhängig. Was meinst du? Dass der f-Suffix ein Float-Literal kennzeichnet? Das steht so im Standard, genau wie l (L) für long double. Oder meinst du die Warnung selbst? Zitieren
maddin Geschrieben 15. August 2007 Geschrieben 15. August 2007 Ich meine die Warnung selbst, die nicht bei jedem Compiler ausgegeben wird. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.