Ich verstehe *p++ &= 0xFF;
in dem folgenden Code nicht. Warum erscheint der Operator &=
hier?Was bedeutet & = in diesem Code?
unsafe void Foo(int[,] arr)
{
int length = arr.Length;
fixed (int* b = arr)
{
int* p = b;
for (int i = 0; i < length; i++)
*p++ &= 0xFF;
}
}
Es ist nur ein anderer Zuweisungsoperator, wie + =, aber für &. https://msdn.microsoft.com/en-us/library/aa691314(v=vs.71).aspx –
Dereferenzierung p, p, Anding mit FF (256) inkrementieren und dieses Ergebnis zurück zu p zuweisen. Die Compiler-Ausgabe sollte gleich sein mit lesbarer Form von p [i] = p [i] &256; ' –
Es ist der' AND' [bitweiser Operator] (https://en.wikipedia.org/wiki/Bitwise_operation#AND) –