Variablen tauschen

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
siro
Beiträge: 382
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 7 und Windows 10
CPU-Target: 64Bit
Wohnort: Berlin

Variablen tauschen

Beitrag von siro »

Manchmal möchte man 2 Variablen tauschen und hat keine Zwischenvariable zur Verfügung.
Das passiert eigentlich nur Assembler Programmierern.. :wink:

Dann kann man das so machen:

x := x XOR y;
y := x XOR y;
x := x XOR y;


Lazarus Testcode:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
var x,y:Byte;
begin
  x:= 26;
  y:= 59;
 
  x:=x XOR y;
  y:=x XOR y;
  x:=x XOR y;
 
  // welchen Wert hat jetzt x und welchen y ???
  caption:='x:'+IntToStr(x) + ' y:' + IntToStr(y);
end;                           


x ist danach 59 und y ist dann 26
Das funktioniert natürlich auch mit allen anderen Werten.

Ebenso geht es mit Integer Werten:

Code: Alles auswählen

 
procedure TForm1.FormCreate(Sender: TObject);
var x,y:integer;
begin
  x:= -1234;
  y:= +5678;
 
  x:=x XOR y;
  y:=x XOR y;
  x:=x XOR y;
 
  // welchen Wert hat jetzt x und welchen y ???
  caption:='x:'+IntToStr(x) + ' y:' + IntToStr(y);
end;         
 


Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten