direct cast *((unsigned short*)&a)
-
naja, ich würde sagen 'doppelt gemoppelt'
- 'a' ist ein 'unsigned short'
- '&a' liefert die Adresse von 'a'
- '(unsigned short*) &a' castet die Adresse von 'a' von einem (void*) auf einem (unsigned short*), wobei das hier völlig unnötig ist.
- durch '*' kann man auf den Werte zugreifen, auf den ein Zeiger zeigt. D.h. ((unsigned short)&a) ist äquivalent zu 'a' selber.
-
uff, danke, auch wenn ich es nur halb verstehe ^^
Wann genau benutzt man jetzt so etwas in der Art?
* ( (unsigned *) &a)
-
dadurch das das casten nichts brignt , nutzt man es auch nicht!!
Wäre das selbe wenn man bspw:
int i=5; int b= (int)i;
und:
( (unsigned *) &a)
Ähm ja... "unsinged" kann nicht alleien stehen, und es muss der datentyp danach stehen (siehe oben char) .. das heist nur das der Werte bereich keine vorzeichen hat...
Bspw:
char = - 127 bis + 127
unsigned char = 0 bis +255
-
BorisDieKlinge schrieb:
Ähm ja... "unsinged" kann nicht alleien stehen, und es muss der datentyp danach stehen (siehe oben char) ..
Nö, unsigned kann ist durchaus "alleine stehen" und ist dann äquivalent zu unsigned int. Das gilt logischerweise analog für signed.
-
echt jetzt??
wenn ich "unsigned" alleine schreibe interpretiert der compiler mir das als unsigned int??Sachen gibts;)
@Thomasss (korrektur):
dann ist *( (unsigned
&a) aqvivalent zu *( (unsigned int
&a), d.h. ein sinloser cast mit int statt mit char wie oben auch....
-
Soll ja auch Leute geben, die signed long long int schreiben...
-
thomasss schrieb:
Wann genau benutzt man jetzt so etwas in der Art?
* ( (unsigned *) &a)
meistens mit arrays, z.b. wenn man die einzelnen bytes eines 'unsigned' braucht.
char b[sizeof(unsigned)]; *(unsigned*)&b = ...; // das & kann man auch weglassen // in b[0] ist jetzt das erste byte, in b[1] das zweite, usw.
-
gibts dann keine fehler wenn man
signed long long int
schreibt?
ich weis nur das er bei
unsigned double
automatisch
unsigned int
interpretiert!
-
BorisDieKlinge schrieb:
gibts dann keine fehler wenn man
signed long long int
schreibt?
Nö, wieso? Das ist der vollständige Name von 'long long' (OK, der liegt jenseits des ANSI-Standards, aber das ist eine andere Geschichte).
-
BorisDieKlinge schrieb:
gibts dann keine fehler wenn man
signed long long int
schreibt?
Nein, warum sollte es? Gut, es setzt einen Compiler voraus der C99 unterstützt, da es erst dort long long gibt.
BorisDieKlinge schrieb:
ich weis nur das er bei
unsigned double
automatisch
unsigned int
interpretiert!
Dein Wissen lässt dich leider auch hier im Stich.