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

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);
 

Breeze

goshogun
Команда форума
Партнер клуба
А теперь подумай, какой недостаток у первого варианта и почему можно забраковать остальные.
 

silent9

Новичок
в первом только числовые можно поменять, но можно так:

PHP:
$a ^= $b ^= $a ^= $b;
 

Breeze

goshogun
Команда форума
Партнер клуба
не только потому, что числовые
 

Breeze

goshogun
Команда форума
Партнер клуба
магические буквы: ОДЗ

вообще данная задача применительно к языкам типа php не имеет практического значения
 

WMix

герр M:)ller
Партнер клуба
я уверен, что 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 году... кстати реакция форумчан еще тогда была такаяже как и сейчас..
и почемут я уверен что и я небыл пионером на этом форуме
 

Beavis

Banned
эти задачи актуальны на школьной олимпиаде по программированию)
 

WMix

герр M:)ller
Партнер клуба
вроде и в питоне можно также написать
x, y = y, x
 
Сверху