Почему C++ и C# дают разные результаты [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Почему C++ и C# дают разные результаты [дубликат]

Сообщение Anonymous »

Это невозможно, не так ли? Но оно есть.
Изображение

В чем тут разница, мне не понятно. Я не могу себе представить, что 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

Вернуться в «C++»