Hallo Leute,
ich habe wohl eine einfache Frage, trotzdem finde ich keine Lösung.
Ich versuche nur den Wert von def auszugeben. Leider kommt immer i als
Ausgabe und ich verstehe nicht warum.
Könnt ihr mir Helfen.
Gruß
Gert
P.S.: das define so Sinn macht oder nicht, sei mal dahingestellt, ist
eine Kundenvorgabe :-(
Gert schrieb:> mit d werden zahlen ausgegeben. aber leider unterschiedliche.
was meinst du mit unterschiedliche?
%d steht für int - hast du verschiende ints?
Gert schrieb:> diese beiden ausgaben sind unterschiedlich
klar einmal dereferenzierst du ja auch den wert. Was soll das überhaupt
sein. soll das (0x0043) eine Adresse oder ein Wert sein?
>> diese beiden ausgaben sind unterschiedlich
Was heißt 'unterschiedlich'
Gert. bitte bedenke bei all deinen Antworten: Wir können nicht über
deine Schulter sehen. Wir sehen und müssen aus dem unsere Schlüsse
ziehen, was du uns schreibst. Alles was du nicht schreibst, kann auf
dieser Seite des Monitors keiner wissen! Daher: Wenn du ein Posting
fertig hast, dann stell dich dumm, lies es noch mal und frag dich: hab
ich alle Informationen gegeben, gibt es etwas, das zwei- oder mehrdeutig
ist? Kann man das was ich geschrieben habe auch anders auffassen?
Gert schrieb:> ob ich dereferenziere oder nicht ist doch egal, ich verändere den wert> doch nicht, oder?
klar einmal gibt du die adresse aus einmal den wert.
Gert schrieb:> eine adresse.>> ob ich dereferenziere oder nicht ist doch egal,
Ist nicht egal.
Ohne Dereferenzierung gibst du den Wert aus, mit Dereferenzierung wird
der Wert selbst wieder als Adresse aufgefasst und dort im Speicher
nachgesehen.
Gert schrieb:> ob ich dereferenziere oder nicht ist doch egal, ich verändere den wert> doch nicht, oder?
Du brauchst DRINGEND ein C Buch und solltest es lesen!
Gert schrieb:> danke. das wollte ich hören. und welcher ist der wert?
per trial und error programmieren ist zeitaufwendig, schneller gehts mit
UR-Schmitt schrieb:> Du brauchst DRINGEND ein C Buch und solltest es lesen!
übrigens dereferenziert du beim ersten Mal 1x,
beim 2. Mal 2x
Eine Analogie.
Das Setup ist -
da gibt es eine Reihe von Briefkästen. Jeder trägt eine Nummer.
In den Briefkästen liegt jeweils ein Zettel und auf diesem Zettel
steht seinerseits wieder eine Nummer
Nummer des BK 0 1 2 3 4 5 6
+---+---+---+---+---+---+---+
| 5 | 3 | 1 | 6 | 0 | 2 | 4 |
+---+---+---+---+---+---+---+
Jetzt hast du die Nummer eines Briefkastens. Sagen wir 4
Diese Nummer kannst du ausgeben. Auf der Ausgabe steht daher: 4
Du kannst dir aber auch den Zettel im Briefkasten ansehen. Auf dem steht
ja ebenfalls eine Nummer. Du dereferenzierst die 'Adresse': *4
Und als Ergebnis erhältst du: 0
gibst du also *4 aus, so lautet die Ausgabe: 0
Du kannst auch noch weiter gehen. Du kannst diese 0, die du durch *4
erhalten hast, seinerseits wieder als die Nummer eines Briefkastens
auffassen lassen, und dir den Zettel ansehen der dort (im Kasten 0)
liegt. Du dereferenzierst also 2 mal **4. Lässt du dir das Ergebnis
davon ausgeben, dann steht auf der Ausgabe: 5
Natürlich kann man dieses Spielchen jetzt weiter treiben. Auch die 5
(die man durch **4 erhalten hat) kann man wieder als die Nummer eines
Briefkastens auffassen lassen und nachsehen, was auf dem Zettel dort
drinnen steht. Also kommt noch ein * davor: ***4
Lässt man sich ***4 ausgeben, dann lautet die Ausgabe: 2
****4 wird dann zu 1
*****4 erzeugt die Ausgabe 3
******4 zaubert auf die Ausgabe eine 6
.....
mit jedem * mehr, wird die Kette des 'Nachsehens was auf dem Zettel im
Briefkasten mit der Nummer n steht' um 1 länger.
>Karl Heinz Buchegger, gib's doch zu, Du hast diese sehr guten Beiträge>schon fertig verfasst auf Deiner Festplatte liegen! :-)))
.. zusammen mit einem Script, welches automatisch hier postet ;-)