Seltsamer Typecast



  • Ok, habe das falschrum hingeschrieben, es ist natürlich (int 😉 gemeint.

    Ja, aber der Code wird will in diesem Fall den Integerwert von b nicht als Adresse verwenden. Es ist ein Fehler im Skript nehme ich an, sie übergeben der Funktion ein (int b), mit einem (int * b) sähe das anders aus..

    Vielen Dank!



  • Einen Int <--> Zeiger zu casten ist richtig, denn zeiger sind vom typ der systemgröße (und der heißt in C++ int). alles andere sollte nicht gehen, zb (char)(void*)



  • piXelshooter schrieb:

    Einen Int <--> Zeiger zu casten ist richtig, denn zeiger sind vom typ der systemgröße (und der heißt in C++ int).

    Stimmt nicht. Ich kenne mindestens einen Compiler, bei dem Zeiger 64- und Integer 32-Bit groß sind 😃



  • piXelshooter schrieb:

    Einen Int <--> Zeiger zu casten ist richtig, denn zeiger sind vom typ der systemgröße (und der heißt in C++ int). alles andere sollte nicht gehen, zb (char)(void*)

    Yo die Aussage ist ziemlicher Quatsch.
    C++ erlaubt auch mehrteilige Zeiger, z.B. Segment + Offset, dann kann ein Zeiger schnell mal 6 oder 8 oder 12 Byte gross sein, ganz egal wie gross ein int ist.
    DU PFEIFFE 😉



  • hustbaer schrieb:

    C++ erlaubt auch mehrteilige Zeiger

    Echt? Chapter&Verse?



  • Kann ich dir leider nicht bieten - aber du kannst ja im Gegenzug die Stelle suchen, wo gefordert wird, daß Zeiger und int die selbe Größe haben MÜSSEN.



  • Warum sollte ich, das ist ja offensichtlich falsch.



  • OK, formulieren wir es anders: Es gibt (afaik) keine Passage, in der der C++ Standard mehrteilige Zeiger verbietet oder die Größe eines Zeigers explizit einschränkt. Es ist ja nicht einmal gefordert, daß Zeiger auf unterschiedliche Datentypen die selbe Größe/Struktur haben (wenn das System keinen Direktzugriff auf einzelne Bytes bietet, muß der Compiler bei char* etwas tricksen).



  • @Bashar:
    Dir ist hoffentlich klar dass ich von einer mehrteiligen INTERNEN Representation gesprochen habe.
    Und das ist ganz offensichtlich richtig.



  • Kann das sein, dass ihr drei gerade ziemlich aneinander vorbeiredet? 😉



  • hustbaer schrieb:

    @Bashar:
    Dir ist hoffentlich klar dass ich von einer mehrteiligen INTERNEN Representation gesprochen habe.

    Jetzt ja. Mir kommt die Aussage nur vergleichbar vor mit "C++ erlaubt auch farbige Pointer, z.B. grüne". Solange das intern ist, wen interessiert es.



  • Bashar schrieb:

    Jetzt ja. Mir kommt die Aussage nur vergleichbar vor mit "C++ erlaubt auch farbige Pointer, z.B. grüne". Solange das intern ist, wen interessiert es.

    Den Anwedner, sobald er sowas brutales wie eine reinterpret_cast auf einen gruenen Pointer loslaesst. Denn ob intern oder nicht, wenn ein gruener Pointer als char-array interpretiert wird kommt was anderes bei raus als wenn mans mit einem roten Pointer (auf das gleiche objekt) macht 😃



  • Ich will nicht mit grünen Pointern arbeiten.



  • n grüner Pointer wär doch mal ne Sache, dann haste sogar intern am Rechner (zumindest auf (Hoch-)Sprachenebene) grüne IT



Anmelden zum Antworten