
В чем тут разница, мне не понятно. Я не могу себе представить, что C# и C++ имеют разные приоритеты для основных операций. Я намеревался перенести большую часть своего старого кода с C++ на C# (небезопасно), но теперь оказался в замешательстве.
Код:
C++ Версия
static void func() {
uint8 ms[4] = { 44, 55, 66, 77 };
uint8 md[4] = { 0, 1, 2, 3 };
uint8* d = md;
*d++ = ms[*d];
*d++ = ms[*d];
*d++ = ms[*d];
*d++ = ms[*d];
}
Результат в MD:
md: 44,55,66,77
Версия C#
static void func() {
var ms = new byte[] { 44, 55, 66, 77 };
var md = new byte[] { 0, 1, 2, 3 };
fixed (byte* ud = md) {
byte* d = ud;
*d++ = ms[*d];
*d++ = ms[*d];
*d++ = ms[*d];
*d++ = ms[*d];
}
}
Результат в MD
md: 55,66,77,44
Подробнее здесь: https://stackoverflow.com/questions/788 ... nt-results
Мобильная версия