Forum: Mikrocontroller und Digitale Elektronik Formatzeichen bei Wertezuweisungen im C-Code


von Bert (Gast)


Lesenswert?

Hallo,

ich bin im C-Code über Formatangaben nach Werten bei 
Variablendeklarationen gestoßen.

zB. u16 variable = 0x0008f;

Was bedeutet das "f" und wie heißen diese Zusätze? Gibt es noch andere?

Gruß
Bert

von Peter II (Gast)


Lesenswert?


von Peter II (Gast)


Lesenswert?


von Funker (Gast)


Lesenswert?

es gibt noch a,b,c,d,und e und diese Buchstaben können auch am Anfang 
oder mittendrin stehen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bert schrieb:
> Was bedeutet das "f" und wie heißen diese Zusätze?

Da ist kein Zusatz. Das ist eine Zahl.

Durch das Präfix 0x ist festgelegt, daß die Zahl in/hexadezimaler 
Notation/ angegeben wird.

von Bert (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Da ist kein Zusatz. Das ist eine Zahl.
>
> Durch das Präfix 0x ist festgelegt, daß die Zahl in/hexadezimaler
> Notation/ angegeben wird.

Das ist mir klar. Was macht das "f"? Teilt es dem Compiler etwas mit?

von AntiHeiner (Gast)


Lesenswert?

Bert schrieb:
> Rufus Τ. F. schrieb:
>> Da ist kein Zusatz. Das ist eine Zahl.
>>
>> Durch das Präfix 0x ist festgelegt, daß die Zahl in/hexadezimaler
>> Notation/ angegeben wird.
>
> Das ist mir klar. Was macht das "f"? Teilt es dem Compiler etwas mit?

Hirn einschalten! 0x8f = 0x8F. 10ct Stück gefallen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bert schrieb:
> Was macht das "f"? Teilt es dem Compiler etwas mit?

Ja.  Bei Gleitkommazahlen schon.  Da teilt es dem Compiler mit, dass
es sich um eine "float"-Zahl handelt statt "double".

Aber über die gültigen Ziffern bei hexadezimalen Zahlen solltest du
nochmal meditieren …

von Olaf (Gast)


Lesenswert?

> Das ist mir klar.

Sobald es dir klar wird wirst "Aua" schreien. :-)

Olaf

von 143 (Gast)


Lesenswert?

Bert schrieb:
> Das ist mir klar. Was macht das "f"? Teilt es dem Compiler etwas mit?

Schau mal wie 143 in Hexadezimal dargestellt wird. Vielleicht wird es so 
verständlicher?

von Peter R. (pnu)


Lesenswert?

Da die C-Freaks ,mit 0x eine folgende Hexzahl (Sedezimalzahl) 
ankündigen, verstehe ich das so, dass die Hex-Zahl 00008F gemeint ist, 
also dezimal 143.

Natürlich ist es üblich, die Sedezimalziffer F groß zu schreiben, aber 
die C-Leute nehmen halt völlig willkürlich irgendwelche Tasten, und wenn 
ihnen die shift-Taste zu lästig ist, dann schreiben sie eben ohne shift. 
(Das zum Thema C-Syntax)

Wenn das f irgendetwas andres bedeuten sollte, ist das wieder ein 
Beispiel dafür, dass die C-Syntax von irgendwelchen Idioten erarbeitet 
wurde.

von Tobias (Gast)


Lesenswert?

Peter R. schrieb:
> Natürlich ist es üblich, die Sedezimalziffer F groß zu schreiben

Warum sollte das "natürlich üblich" sein?
Beides (groß/klein) ist gleichermaßen üblich!

von Hanswurst (Gast)


Lesenswert?

Nochmal gegenübergestellt.

uint16_t = 0x12AB; --- Mit dem Prefix "0x" wird eine hexadezimale Zahl 
eingeleitet. Die zulässigen Ziffern sind: 
0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f.
Das 'f' ist damit kein Suffix sondern eine Ziffer, auch wenn es ganz 
rechts steht.
Um diesen Fall handelt es sich in Deinem Eröffnungspost.
"Formatzeichen" hingegen sind die Zeichen die in einem printf oder scanf 
- "Formatstring" stehen, um anzugeben wie eine Zeichenfolge 
interpretiert werden soll.

und

uint16_t = 1234; --- Ohne jeden Prefix wird eine dezimale Zahl 
gekennzeichnet. Die zulässigen Ziffern sind: 0,1,2,3,4,5,6,7,8,9.

Hingegen ist:

float a = 30.0f; -- Ohne Prefix, wieder Dezimal mit den erwähnten 
Ziffern und einem zusätzlichen Punkt. Das 'f' ist keine Ziffer, sondern 
ein Suffix, der angibt, dass der Compiler die Zahl nicht als double 
sondern als float zu interpretieren hat.

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
Noch kein Account? Hier anmelden.