Поменять переменные местами

  • Автор темы Автор темы silent9
  • Дата начала Дата начала

silent9

Новичок
Каким способом лучше поменять переменные a и b не используя 3 переменную?

PHP:
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;

PHP:
($a=array($a, $b)) && ($b=$a[0]) && ($a=$a[1]);

PHP:
$a = “aaa”;
$b = “bbb”;
list($b, $a) = array($a, $b);
 
А теперь подумай, какой недостаток у первого варианта и почему можно забраковать остальные.
 
в первом только числовые можно поменять, но можно так:

PHP:
$a ^= $b ^= $a ^= $b;
 
не только потому, что числовые
 
магические буквы: ОДЗ

вообще данная задача применительно к языкам типа php не имеет практического значения
 
я уверен, что silent9 не пользуется ни одним из способов кроме возможно
PHP:
list($b, $a) = array($a, $b);
очень удобная штучка, ее можно использовать и на 30 переменных .. вопрос исключительно задачи

но понимать что математически возможно и такое
PHP:
$a=$a+$b;
$b=$a-$b;
$a=$a-$b;
просто прикольно, и хочется рассказать всем...

остальные способы больше похожи на запутывание кода, и опять хорошо ети способы знать чтоб разбираться в чужом запутанном коде..

PHP:
($a=array($a, $b)) && ($b=$a[0]) && ($a=$a[1]);
небудет работать если 2е присвоение вернет false те если $a была изначально null или?

но сдается мне что о пару этих способов я писал тут еще в 2003 году... кстати реакция форумчан еще тогда была такаяже как и сейчас..
и почемут я уверен что и я небыл пионером на этом форуме
 
эти задачи актуальны на школьной олимпиаде по программированию)
 
вроде и в питоне можно также написать
x, y = y, x
 
Сверху