Войти
ПрограммированиеФорумОбщее

Обмен значений переменных. (комментарии) (2 стр)

Страницы: 1 2 3 4 5 Следующая »
#15
0:24, 5 апр. 2011

std::swap вобщето.


#16
16:55, 5 апр. 2011

Alex the..
> , но паскалевский считался когда то эталонным
> и с тех пор компиляторы только разжирели
>
тролли с тех пор только разжирели, согласен:(

#17
19:43, 5 апр. 2011

с ксором красивая запись:
a^=b^=a^=b;

#18
22:51, 5 апр. 2011

Kernel
> с ксором красивая запись:
> a^=b^=a^=b;

плохая запись

UPD: по ссылке - почему она плохая http://dubor.livejournal.com/126516.html?thread=196916#t196916

#19
23:06, 5 апр. 2011

Kernel
> с ксором красивая запись:
> a^=b^=a^=b;

vs

std::swap(a,b);

)

#20
23:36, 5 апр. 2011

еще никто не предложил std::swap?

#21
23:43, 5 апр. 2011

Интересно, почему разработчики ЯП так упорно не хотят добавить сахарку в свои продукты? Ведь есть же в ассемблере инструкция xchg,... казалось бы,... А так из языков, в которых есть оператор обмена значений между переменными, я навскидку один лишь С-- помню, - там это делалось оператором  <>

#22
23:51, 5 апр. 2011

0iStalker
Вроде в питоне можно написать (a, b) = (b, a). Может и в других языках с такими кортежами можно такое.

#23
0:15, 6 апр. 2011

dub
> плохая запись
Не понял. Следующий оператор присваивания может выполнятся до того, как все закончилось с предыдущим?
Будем знать.

#24
8:18, 6 апр. 2011

NULL_PTR
> Может и в других языках с такими кортежами можно такое.
В Lua наверное можно )

#25
10:51, 6 апр. 2011

0iStalker
> я навскидку один лишь С-- помню, - там это делалось оператором <>

На правах оффтопа - кто-нибудь может показать как этот С-- выглядит? А то только какие-то непонятные странцы с кучей текста с описанием, и ссылками либо на такие же страницы, либо на предложение скачать какую-нибудь фигню. Я не хочу ничего качать.

#26
11:17, 6 апр. 2011

Спеку, таки, пришлось скачать.

/* 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 );
  }
}

#27
11:26, 6 апр. 2011

Chipmunk
> return( 1, 1 )

Что это значит? В описании функции не сказано, что она возвращает пары. Или это eax:edx? Полезно для длинного умножения.

Chipmunk
> /* Tail recursion */

Ручной разворот хвостовой рекурсии?

Мне кажется, этот язык не нужен, потому программер всё равно не сделает всё идеально, а такие низкоуровневые вещи лучше делает компилятор. Язык должен быть достаточно высокоуровневен, чтобы оставлять компилятору пространство для манёвров.

#28
17:14, 6 апр. 2011

Вот как самую простую проблему можно развернуть в такое длинное обсуждение.

#29
18:16, 6 апр. 2011

PlayerDark
> Вот как самую простую проблему можно развернуть в такое длинное обсуждение.
А сложные проблемы все боятся обсуждать. Темы на три поста выходят.

Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.