Почему код выдаёт неправильный результат?
Когда что-то не понятно, просто распишите каждый шаг, который происходит в программе:// запомнили в x значение 0
x = 0;
// запомнили в y значение -200
y = -200;

// тут выражение из нескольких действий
x = 0 * x + 1 * y
// 1. вместо переменных подставим значения
// 0 * 0 + 1 * -200
// 2. посчитаем умножения
// 0 + -200
// 3. посчитаем сложения
// -200
// запомним -200 в x

// на этом этапе у нас в x запомнено -200 и в y тоже -200

// с этим проделайте по аналогии
y = -1 * x + 0 * y
потому что ваш код эквивалентен этому :
x = 0;
y = -200;

x = 1 * y; // 1*(-200)
y = -1 * x; // 1*(-200) ведь Х уже -200

сделайте так
x = 0;
y = -200;

temp = x;
x = y; // -200)
y = -temp; // -0

а еще лучше так

x = 0;
y = -200;

[x,y]=[y,-x];