- 1
- 2
- 3
- 4
- 5
uint8_t* head = (uint8_t*) Buffer::Data(buffer);
uint8_t* tail = head + Buffer::Length(buffer) - 1;
// xor swap, just because I can
while (head < tail) *head ^= *tail, *tail ^= *head, *head ^= *tail, ++head, --tail;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+14
uint8_t* head = (uint8_t*) Buffer::Data(buffer);
uint8_t* tail = head + Buffer::Length(buffer) - 1;
// xor swap, just because I can
while (head < tail) *head ^= *tail, *tail ^= *head, *head ^= *tail, ++head, --tail;
https://github.com/bnoordhuis/node-buffertools/blob/master/buffertools.cc#L157
bormand 22.05.2013 11:06 # +8
- Почему кот яйца лижет?
- Потому что может!
defecate-plusplus 22.05.2013 11:32 # +3
bormand 22.05.2013 12:44 # +1
defecate-plusplus 22.05.2013 12:54 # +1
но в целом по ссылке сходил и закрыл
мерзко там всё написано, паскаль съел его мозг
movaxbx 22.05.2013 12:56 # +7
someone 22.05.2013 15:05 # +2
someone 22.05.2013 14:33 # 0
А вообще извращение, конечно. Хорошо хоть, здесь не используется неблохоугодная конструкция x ^= y ^= x ^= y, которая вообще UB.
myaut 22.05.2013 14:58 # +2
TarasB 22.05.2013 15:00 # −2
Если написать честный swap на нормальном языке (т.е. поддерживающем in out), то должно быть оптимальнее.
russling 23.05.2013 14:39 # 0
roman-kashitsyn 23.05.2013 14:48 # +4
russling 23.05.2013 17:11 # +1
bormand 23.05.2013 17:51 # +1
guest8 22.07.2018 12:22 # −999
guest8 22.07.2018 15:00 # −999
guest8 22.07.2018 23:11 # −999