Was passiert bei einem Cast?



  • Hallo Forum,

    ich habe ein paar uint Variablen die ich mit Werten Fülle. zB 0xFFFEFFFE
    Diese Variablen liegen definitiv im uint Bereich. Die Werte sind keine Zahlen sondern BitMasken bei denen mit AND und OR hier und da Bits gesetzt werden.

    Nun muß ich diese Variablen an externe Funktionen schicken. Diese Funktionen wollen immer nur int haben. Wenn ich nun die uints in int caste, verändern sich durch den Cast unter Umständen die Bitmuster?

    Vielen Dank

    Peter



  • Hat sich erledigt.
    Über die Überwachung kann man sehen das der gecastete Wert nur anders interpretiert wird.

    uint x = 0xFFFFFFFF;
    int i = (int)x;

    In Überwachung: (uint)i



  • Interessanter Punkt.
    Ich weiss zwar was in der Implementierung von MS (und vermutlich auch in Mono) passiert, nämlich das was du beobachtest. Also dass sich das Bitmuster nicht ändert.
    Ich weiss aber nicht was der C# Sprachstandard und/oder die CLI hier garantieren bzw. vorschreiben.

    Weiss das jemand?
    Ist das garantiertes Verhalten?
    Und impliziert .NET/CLI two's complement?


Log in to reply