Не для всех вещественных чисел можно использовать такой вариант обмена. Пусть, например, имеются два вещественных числа: a=2.3e26, b=2e-10. Тогда при их сложении значение переменной b "потеряется" (станет равным 0) вследствие внутреннего представления в компьютере действительных чисел. При выполнении следующей программы при указанных значениях:
Program Obm1; Var a, b:Real; Begin Write('Задайте два вещественных числа: '); ReadLn(a,b); WriteLn('Значения переменных до обмена.'); WriteLn('a=',a,' b=',b); {Произведем обмен значений переменных.} a:=a+b; {Значение переменной a не изменится!!!} b:=a-b; {Значение переменной b станет равным a!!!} a:=a-b; {Значение переменной a станет равным 0!!!} WriteLn('Значения переменных после обмена.'); WriteLn('a=',a,' b=',b); End.
переменная a станет равной 0.