Hallo, ich bin bald am verzweifeln, morgen ist Klausur angesagt, und ich bekomme diese Aufgabe nicht gelöst (s. Anhang), bzw. sie ist ja schon gelöst nur kann ich die Lösungen nicht nachvollziehen, Tante Googel brachte mir auch nichts, zum Thema Typumwandlung, vielleicht kann mir das jemand erklären, oder mir sagen wo ich es nachlesen kann... Schonmal dankeschön im Voraus
hallo, wo brennt's denn genau? prizipiell wird immer auf das höhere promotet, afaik. und für deine lösung passt das auch. bye kosmo
Halls Kosmonaut, ok, das ist schonmal ein guter Hinweis danke ;-) Ich verstehe z.B. nicht was float x=0.3f bedeutet, bzw. wofür das f steht, was bringt das? Dann verstehe ich nicht woher aufeinmal das unsigned kommt und was *(A+3) bedeutet. Oder wofür in der letzten Zeile 3.14L steht, und unsigned long ist doch keine Datentyp was ist damit gemeint?
Student wrote: > Halls Kosmonaut, > ok, das ist schonmal ein guter Hinweis danke ;-) > Ich verstehe z.B. nicht was float x=0.3f bedeutet, bzw. wofür das f > steht, was bringt das Dann behandelt der Compiler die 0.3 als Float-Zahl. > Dann verstehe ich nicht woher aufeinmal das unsigned kommt Unsigned? Du meinst in der Variablendeklaration? Das bedeutet, dass die Zahl kein Vorzeichen besitzt. > und was > *(A+3) bedeutet. A ist ein Pointer (Okay es ist kein Pointer, wird aber vom Compiler so behandelt). A + 3 lässt den Pointer um 3 "chars" weiterrücken. Das * ist kein Multiplikationsoperator, sondern ein Indirektionsoperator, der dem Compiler sagt, dass er nicht A (Also die Adresse verwenden soll), sondern das, was an der Speicherstelle A geschrieben steht. > Oder wofür in der letzten Zeile 3.14L steht, und unsigned long ist doch > keine Datentyp was ist damit gemeint? Das L castet diese Zahl in einen Long-typ. Und Long ist ein Datentyp (in der Regel 32-Bit). Übrigens ist 3.14L Schwachsinn, da hierbei die Stellen hinter dem Komma verloren gehen. Aber ist ja auch nur ein Test ;)
hallo, >Ich verstehe z.B. nicht was float x=0.3f bedeutet, bzw. wofür das f >steht, was bringt das? 'f' ist ein suffix, um zu zeigen: hey, das ist ein float. um genau zu sein: eine float-konstante. ohne dass sind gleitpunkt-zahlen erstmal double's (lt. k&r). und L bzw. l ist das eben für long. >Dann verstehe ich nicht woher aufeinmal das unsigned kommt aus dem einen operanden. das fällt nicht unterm tisch. >und was *(A+3) bedeutet hm, basics. A ist ein array. der name eines arrays ist auch ein pointer, und zwar auf das erste element des array. A+3 bedeutet den pointer 3 vorgeschoben, ergo zeigt er jetzt auf das dritte element des arrays. * dereferenziert, holt das element ran. genausogut hätte man auch A[3] schreiben können. aber darum geht's ja nicht: ein element eines arrays hat erst einmal den typ, der für das array gewählt wurde. was auch sonst. >unsigned long ist doch keine Datentyp was ist damit gemeint? warum nicht? long ist ein erweiterter int (doppelt so groß) ok, zu langsam. na egal, doppelt hält besser :) bye kosmo
kosmonaut pirx wrote:
> ...ergo zeigt er jetzt auf das dritte element des arrays.
Eher auf das vierte (Index 0, also (A + 0) wäre das "erste")...
Ansonsten volle Zustimmung.
Hallo, vielen dank, für die guten Erklärungen, haben mir echt weitergeholfen :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.