Variablen tauschen

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben

Variablen tauschen

Beitragvon siro » 13. Feb 2018, 16:15 Variablen tauschen

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
"C" verCehnfacht die Entwicklungszeit...
siro
 
Beiträge: 276
Registriert: 23. Aug 2016, 13:25
Wohnort: Berlin
OS, Lazarus, FPC: Windows 7 Windows 8.1 Windows 10 | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Dies und Das



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried