Was genau macht diese Zeile bitte:



  • Ich kanns mir zwar ungefähr denken, aber ich kapiers nicht ganz. Was genau bedeutet: (buffer + 5) ?

    unsigned char buffer[9];
    (buffer + 5) = id;



  • Sie erzeugt einen Compilerfehler. Fehlt da vielleicht ein * am Anfang?

    buffer ist ein unsigned char-Array und gleichzeitig ein Zeiger auf das nullte Element dieses Arrays (vereinfacht gesagt). buffer+5 ist dann ein Zeiger auf das 5. Element des Arrays. *(buffer+5)=id ist also das gleiche wie buffer[5] = id.



  • kann sein dass da ein * vorne fehlt.
    wenn du sagt dass es das gleiche wie buffer[5] ist, dann ok danke 🙂 .

    Angenommen ich schreibe (buffer+5) = id, und id = 0x1234 hat dann buffer[5] den wert 0x12 und buffer[6] den wert 0x34?



  • Nein.
    Erstens ist "(buffer+5)=id" immer noch ungültig.
    Und zweitens wird nur dem Array-Element etwas zugewiesen, das du angegeben hast - und wenn du einen int-Wert in einen char reinquetschen willst, wird der obere Teil einfach abgeschnitten. Also bekommt 'buffer[5]' den Wert 0x34 und der Rest des Arrays bleibt unverändert.



  • CStoll schrieb:

    und wenn du einen int-Wert in einen char reinquetschen willst, wird der obere Teil einfach abgeschnitten.

    Denn bekanntlich passt int nicht in char rein 😉
    Stimmts, oder hab ich Recht, c.rackwitz ?



  • proggingmania schrieb:

    Denn bekanntlich passt int nicht in char rein.

    Willst schon wieder auf (int) EOF ?= (char) EOF raus, hä? - lass es lieber 😉

    greetz, Swordfish



  • Swordfish schrieb:

    Willst schon wieder auf (int) EOF ?= (char) EOF raus, hä?
    Das - lass es lieber 😉

    Och nööö, lass mal stecken, ich habe mein Lehrgeld gezahlt 😃



  • er will nur darauf hinaus, dass der standard sehr geheimnisvoll ist und theoretisch ein int so gross wie ein char sein kann oder sowas.

    vergesst es einfach. wer mit solchen faellen zu tun hat, weiss das von alleine.


Anmelden zum Antworten