std::swap вобщето.
Alex the..
> , но паскалевский считался когда то эталонным
> и с тех пор компиляторы только разжирели
>
тролли с тех пор только разжирели, согласен:(
с ксором красивая запись:
a^=b^=a^=b;
Kernel
> с ксором красивая запись:
> a^=b^=a^=b;
плохая запись
UPD: по ссылке - почему она плохая http://dubor.livejournal.com/126516.html?thread=196916#t196916
Kernel
> с ксором красивая запись:
> a^=b^=a^=b;
vs
std::swap(a,b);
)
еще никто не предложил std::swap?
Интересно, почему разработчики ЯП так упорно не хотят добавить сахарку в свои продукты? Ведь есть же в ассемблере инструкция xchg,... казалось бы,... А так из языков, в которых есть оператор обмена значений между переменными, я навскидку один лишь С-- помню, - там это делалось оператором <>
0iStalker
Вроде в питоне можно написать (a, b) = (b, a). Может и в других языках с такими кортежами можно такое.
dub
> плохая запись
Не понял. Следующий оператор присваивания может выполнятся до того, как все закончилось с предыдущим?
Будем знать.
NULL_PTR
> Может и в других языках с такими кортежами можно такое.
В Lua наверное можно )
0iStalker
> я навскидку один лишь С-- помню, - там это делалось оператором <>
На правах оффтопа - кто-нибудь может показать как этот С-- выглядит? А то только какие-то непонятные странцы с кучей текста с описанием, и ссылками либо на такие же страницы, либо на предложение скачать какую-нибудь фигню. Я не хочу ничего качать.
Спеку, таки, пришлось скачать.
/* Ordinary recursion */ export sp1; sp1(bits32 n ) { bits32 s, p; if n == 1 { return( 1, 1 ); } else { s, p = sp1( n-1 ); return( s+n, p*n ); } } /* Loops */ export sp3; sp3( bits32 n ) { bits32 s, p; s = 1; p = 1; loop: if n==1 { return( s, p ); } else { s = s+n; p = p*n; n = n-1; goto loop; } } /* Tail recursion */ export sp2; sp2( bits32 n ) { jump sp2_help( n, 1, 1 ); } sp2_help( bits32 n, bits32 s, bits32 p ) { if n==1 { return( s, p ); } else { jump sp2_help( n-1, s+n, p*n ); } }
Chipmunk
> return( 1, 1 )
Что это значит? В описании функции не сказано, что она возвращает пары. Или это eax:edx? Полезно для длинного умножения.
Chipmunk
> /* Tail recursion */
Ручной разворот хвостовой рекурсии?
Мне кажется, этот язык не нужен, потому программер всё равно не сделает всё идеально, а такие низкоуровневые вещи лучше делает компилятор. Язык должен быть достаточно высокоуровневен, чтобы оставлять компилятору пространство для манёвров.
Вот как самую простую проблему можно развернуть в такое длинное обсуждение.
PlayerDark
> Вот как самую простую проблему можно развернуть в такое длинное обсуждение.
А сложные проблемы все боятся обсуждать. Темы на три поста выходят.
Тема в архиве.