Var a, b: integer;
begin
a := 5;
b := 12;
writeln('a = ', a);
writeln('b = ', b);
a := a + b;
b := a - b;
a := a - b;
writeln('new a = ', a);
writeln('new b = ', b);
end.
Недостаток этого алгоритма в том, что может произойти переполнение целочисленного типа. Можно применять этот алгоритм и для вещественных чисел, однако может потерятья небольшая точность.