Was macht dieser C Code?

...komplette Frage anzeigen

2 Antworten

Der Stern dereferenziert den Pointer, die variable temp erhält den Wert des ersten Zeichens aus dem String, maskiert mit 00001111b.

Analoge Schreibweise wäre

temp = theString[0] & 0x0F;

micholee 26.01.2013, 10:51

Hi, danke für die schnelle Antwort. Oki, dann hat wohl der Stern doch eine Sonderbedeutung. D.h., dies wird nicht als Pointer/Referenz genutzt.

*theString = theString[0]. Sieht aber auch aus wie ein Array? :-)

Danke auch für die Erklärung mit der Maskierung. D.h., auch wenn der String mehr Zeichen hätte, könnte ich auch 0xF nehmen, wenn es mir eh nur um das erste Zeichen geht.

0
Mikkey 26.01.2013, 10:59
@micholee

In C/C++ sind Pointer und Arrays ziemlich gleichbedeutend, es gilt z.B. auch

theString[3] = *(theString+3) für das vierte Zeichen.

Und 0xF == 0x0F == 0x000F ...

0

Hallo, ich versuche mal, dir rasch zu antworten, ohne viel nachzulesen:

& macht eine bitweise UND-Verknüpfung, d.h. hier, dass nur das least significant Halb-byte (Nibble) ausgewertet werden kann, da die UND-Verknüpfung nur da 1 ergibt, wenn beide Eingänge auf 1 liegen. 0F im Hex-Format bedeutet 00001111 Das Beispiel hier habe ich gefunden: It is simple: & is the bitwise AND operator (do you know about boolean?). If m5 has a bit pattern of 00010100 in memory(2 powered 4 + 2 powered by 2) and 0xF=(15) has a bit pattern of 00001111 then b will have a bit pattern of 00000100 that is equal to 4.

micholee 26.01.2013, 11:08

hey, vielen Dank für die Erklärung. Die bitweise Verknüpfung hätte ich verstanden :-)

0

Was möchtest Du wissen?