Zitat Zitat von ceisserer Beitrag anzeigen
Wird nicht, bevor dir mask-operation ausgeführt wird, das int implizit nach long gecastet?
Ja.

Würde dabei nicht das vorzeichenbit ganz nach vorne rutschen und die anschließende Maskierung nutzlos werden?
Ja, und es würde die anschließende Maskierung nicht nutzlos machen, sondern notwendig machen.

Beispiel: Der "unsigned int"-Wert ist 0xFFFFFFFE. Der wird als "int" an die Funktion übergeben, also als -2. Nach "long" gecastet ist dies natürlich immer noch -2, also intern 0xFFFFFFFFFFFFFFFE. Wir wollen aber 0xFFFFFFFE als Ergebnis, also nur die untersten 32 Bit, daher die Maskierung.