Je me demandais toujours pourquoi une opération aussi simple et basique comme l'échange du contenu de deux variables n'est pas intégrée pour de nombreuses langues.Pourquoi un opérateur swap/exchange n'existe-t-il pas dans les langages impératifs ou OO comme C/C++/C#/Java ...?
C'est l'un des exercices de programmation les plus élémentaires dans les cours d'informatique; il est fortement utilisé dans de nombreux algorithmes (par exemple, le tri); de temps en temps on en a besoin et on doit utiliser une variable temporaire ou utiliser une fonction template/générique.
Il s'agit même d'une instruction machine de base sur de nombreux processeurs, de sorte que le schéma standard avec une variable temporaire sera optimisé.
De nombreux opérateurs moins évidents ont été créés, comme les opérateurs d'affectation (par exemple + =, qui a probablement été créé pour refléter les instructions machine cumulatives, par exemple ajouter ax, bx), ou le? opérateur en C#.
Alors, quelle est la raison? Ou existe-t-il réellement, et je l'ai toujours manqué?
Bonnes questions. Je me suis aussi interrogé à ce sujet, bien que les réponses aient du sens. – pro3carp3
L'instruction SWAP * existe * dans QBasic. – dan04
Plus intéressant qu'une macro "swap two variables", il y aurait quelque chose qui se comporterait comme l'opérateur virgule, mais dont la valeur était celle du premier opérande. Imaginez que l'opérateur ait été écrit "=:" (je ne sais vraiment pas quelle notation serait bonne). Alors "x = (y =: y = x)" permuterait x et y. D'autres utilisations seraient, par exemple. "return (y =: y + = 4)" serait conceptuellement similaire à l'opérateur post-incrément, mais incrémenté de 4 au lieu d'un. – supercat