Typumwandlung in C

Gast #601149
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
Gast #601181
Lesenswert?
• ▲
▼
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?
Persönliche Seite #601186
Lesenswert?
• ▲
▼
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 
;)
Gast #601189
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.