Siempre me he preguntado por qué una operación tan simple y básica como intercambiar los contenidos de dos variables no está incorporada en muchos idiomas.¿Por qué no existe un operador de intercambio/intercambio en lenguaje imperativo o OO como C/C++/C#/Java ...?
Es uno de los ejercicios de programación más básicos en las clases de informática; se usa mucho en muchos algoritmos (por ejemplo, clasificación); de vez en cuando uno lo necesita y uno debe usar una variable temporal o usar una plantilla/función genérica.
Incluso es una instrucción básica de la máquina en muchos procesadores, por lo que se optimizará el esquema estándar con una variable temporal.
Se han creado muchos operadores menos obvios, como los operadores de asignación (por ejemplo, + =, que probablemente se creó para reflejar las instrucciones acumulativas de la máquina, por ejemplo, agregar ax, bx), o el ?? operador en C#.
Entonces, ¿cuál es el motivo? ¿O existe realmente y siempre me lo perdí?
Buenas preguntas. También me he preguntado sobre esto, aunque las respuestas tienen sentido. – pro3carp3
La declaración SWAP * does * existe en QBasic. – dan04
Más interesante que una macro 'cambiar dos variables' sería algo que se comportara como el operador de coma, pero cuyo valor fuera el del primer operando. Imagine que el operador se escribiera como "=:" (realmente no sé qué notación sería buena). Entonces "x = (y =: y = x)" cambiaría x e y. Otros usos serían, p. "return (y =: y + = 4)" sería conceptualmente similar al operador de incremento posterior, pero incrementándose en 4 en lugar de uno. – supercat