Für Integer-Swap können Sie diese Methode ohne lokale Variable verwenden:
int swap(int* a, int* b)
{
*a -= *b;
*b += *a;
*a = *b - *a;
}
Sollte sein void swap(int* a, int* b) um die zu vermeiden warning: control reaches end of non-void function (Überprüfen schadet nie if (*a != *b) vor dem tauschen…)
– David C. Rankin
30. Mai 2017 um 5:06 Uhr
Bitte, oh bitte, benutze das nicht. Abgesehen davon, dass es einen falschen Rückgabetyp hat und schwerer zu lesen ist als die Art mit einer temporären Variablen, ist es auf fast jeder Architektur langsamer. Das einzige, was eine dritte Variable kostet, ist ein temporäres Register.
XOR-Swaps und dergleichen gehören zum IOCCC, nicht im eigentlichen Code oder als Ratschlag für Anfänger.
– Matti Virkkunen
4. Februar 2012 um 21:16 Uhr