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
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.