Sythus Geschrieben 13. August 2007 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
nic_power Geschrieben 13. August 2007 Teilen Geschrieben 13. August 2007 Hallo, wie sieht die genaue Warnung aus und mit welchem Compiler unter welchem Betriebssystem arbeitest Du? Nic Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sythus Geschrieben 13. August 2007 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 13. August 2007 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
marcom Geschrieben 13. August 2007 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maddin Geschrieben 14. August 2007 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 15. August 2007 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maddin Geschrieben 15. August 2007 Teilen Geschrieben 15. August 2007 Ich meine die Warnung selbst, die nicht bei jedem Compiler ausgegeben wird. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.