#1 14. Dezember 2008 int größer als float Hey Leute! Ich habe ein C-Programm auf einen Microprozessor programmiert. Um Programmspeicher zu sparen, habe ich die float Variablen, die nicht zwingend float sein müssen auf int umgewandelt. Jedoch benötige ich jetzt mehr Programmspeicher, als wenn ich diese Variablen auf float gelassen hätte. Kann mir jemand erklären warum das so ist? Gruß + Multi-Zitat Zitieren
#2 14. Dezember 2008 Zuletzt von einem Moderator bearbeitet: 15. April 2017 AW: int größer als float Das passt dazu: Int.,float wie viel Speicher - RR:Board Scheint aber, dass float und int den selben Speicherverbauch haben. Im Zweifelsfall solltest du also auf kleinere Variablentypen zugreifen (short) + Multi-Zitat Zitieren
#3 14. Dezember 2008 AW: int größer als float Das würde aber nur erklären, warum ich keinen Speicherplatz einsparen kann. Aber es erklärt nicht, warum der Speicherbedarf für int größer ist als für float. + Multi-Zitat Zitieren
#4 14. Dezember 2008 AW: int größer als float hast du das denn schon mit sizeof() überprüft?. Ansonsten such dir halt einen Typ, der weniger Speicher verbraucht (wie z.B. short). BTW: in dem bereits geposteten Link wird auch geklärt, dass float je nach Compiler unterschiedliche Größen besitzt. Vielleicht solltest du mal dort nachschauen + Multi-Zitat Zitieren
#5 14. Dezember 2008 AW: int größer als float Wer sagt denn bitte, dass der Speicherplatz von der Variablen verwendet wird?! Kleiner Tipp: Vergiss die Konvertierungen nicht! Die kosten in einigen Fällen extrem Speicher. + Multi-Zitat Zitieren
#6 8. Januar 2009 AW: int größer als float Ich hab es jetzt mit sizeof probiert und habe folgendes gesehen: short 2 Bit int 2 Bit float 4 Bit + Multi-Zitat Zitieren
#7 8. Januar 2009 AW: int größer als float Was meinst Du damit? Welche Konvertierung? + Multi-Zitat Zitieren
#8 8. Januar 2009 AW: int größer als float byte, nicht bit kannst du was von deinem code zeigen? dann können wir mal schauen. Wie hast du die float werte in Integer umgewandelt? von Hand z.B Code: float a = 5.6; durch int a =5.6; oder int a=5 ersetzt solltest du int a = 5.6 gemacht haben wird die 5.6 so in das Programm als Literalkonstante einkompiliert. Das heißt wenn du dir den asm code anguckst steht da irgendwo 5.6 in Gleitkommadarstellung. Zur Laufzeit wird die 5.6 aus dem Speicher gefischt und in den Integerwert 5 umgewandelt. Dann noch nach a kopiert. Das bringt natürlich einiges an zusätzlichen Programmroutinen mit sich. wie gesagt, sollten erst sehen was du getan hast, bevor wir das phänomen erklären können + Multi-Zitat Zitieren
#9 8. Januar 2009 AW: int größer als float Ja, verschrieben. Natürlich mein ich Byte... Naja...ich wandle die Werte nicht direkt um. Ich bekomme von einem Messbaustein Werte, die ich in einer int Variable abspeichere. Anschließend multipliziere ich sie mit einem Faktor und das Ergebnis speichere ich dann in eine float Variable. Als Beispiel: float t; int t_mess; t = t_mess * 0.25; reicht Dir das als Beispiel? + Multi-Zitat Zitieren
#10 11. Januar 2009 AW: int größer als float Hallo! du solltest es lieber anders versuchen: float t; int t_mess; t = static_cast<float>(t_mess) * 0.25f; wenn man datentypen in andere umwandeln möchte sollte man immer vernünftig casten! genauso wenn du in die andere richtung willst (von float nach int): float f; int i; i = static_cast<int>(f); btw: das ist, was Tanya mit konvertieren meint MFG Pacman + Multi-Zitat Zitieren
#11 11. Januar 2009 AW: int größer als float Danke für die ausführliche Antwort. Leider funktioniert das bei mir nicht. Der Compiler gibt mir einen Syntax Error aus. Ist vielleicht irgendein Fehler in deinem Code???? + Multi-Zitat Zitieren
#12 12. Januar 2009 AW: int größer als float die genaue fehlermeldung wäre hilfreich. Ich nehme an, dass du nicht alle nötigen header-dateien eingebunden hast. also ich weiß ausm Kopf jetzt auch nicht genau wo die Type Casts drin sind, aber wenn du einfach die <windows.h> mit einbindest ist bestimmt alles dabei =P zur Not nochmal nen Blick in die Standard Library von C++ schauen... + Multi-Zitat Zitieren
#13 13. Januar 2009 AW: int größer als float Er schreibt in seinem Post, dass er C verwendet, static_cast etc. sind aber c++-Casts. In C sehen die Casts ganz einfach so aus: Code: float t; int t_mess; t = (float)t_mess * 0.25f; sprich einfach den datentyp in klammern davor schreiben + Multi-Zitat Zitieren
#14 15. Februar 2009 AW: int größer als float Danke für eure gute Tipps. Ich habe jetzt die Konvertierungen so umgeschrieben. Aber ich bin jetzt draufgekommen, was der wirkliche Grund dafür war, dass der Speicherbedarf so explodiert ist. Der Compiler ist nur eine Demoversion und die Testzeit ist abgelaufen. Von da an hat er sämtliche Bibliotheken eingebunden, auch die, die gar nicht benötigt werden. + Multi-Zitat Zitieren