Разработка Roman Moskovskiy
950

Какую самую странную дичь из мира программирования вы знаете?

#include <iostream> int main () { int a = 2; int b = 3; a ^= b ^= a ^= b; printf ("a=%d b=%d", a, b); //a = 3, b = 2 }

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы рассказать свою историю.

Написать
{ "author_name": "Roman Moskovskiy", "author_type": "self", "tags": ["include"], "comments": 50, "likes": 14, "favorites": 2, "is_advertisement": false, "subsite_label": "dev", "id": 92237, "is_wide": true, "is_ugc": true, "date": "Wed, 03 Apr 2019 22:07:35 +0300" }
{ "id": 92237, "author_id": 160854, "diff_limit": 1000, "urls": {"diff":"\/comments\/92237\/get","add":"\/comments\/92237\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/92237"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 232424, "last_count_and_date": null }
50 комментариев

Популярные

По порядку

Написать комментарий...

Если кто забыл\не знал про то, почему это так работает:
"a ^= b ^= a ^= b" вычисляется справа налево.
a1 <- a ^ b
b1 <- b ^ a1 - т.е. b1 <- b ^ (a ^ b )
a2 <- a1 ^ b1 - т.е. (a ^ b) ^ (b ^ a ^ b)
b1 - это новое значение b, и a2 - новое значение a.
xor - операция ассоциативная и коммутативная, т.е. все скобки можно выкинуть и вычислять выражение в любом удобном порядке. Напоминаю, что
0 ^ 0 = 0
1 ^ 0 = 0 ^ 1 = 1
1 ^ 1 = 0.
Кроме того, есть интересные свойства(чекайте по табличке истинности выше):
x ^ x = 0 (всегда)
x ^ 0 = x
Получаем,
b ^ (a ^ b ) = b ^ b ^ a = 0 ^ a = a - это новое значение b.
(a ^ b) ^ (b ^ b ^ a) = (a ^ a) ^ (b ^ b) ^ b = 0 ^ 0 ^ b = 0 ^ b = b - это новое значение a.

Ответить
Перейти к комментарию
25

Комментарий удален по просьбе пользователя

Ответить
15

всегда ржу с этого в js, хоть он мне и нравится)

Ответить
12

Какую самую странную дичь из мира программирования вы знаете?

Веб-разработка в 2019 году.

Ответить
11

Меня всегда пугали самоуверенные безумцы, устраивающие пятничные деплои

Ответить
0

Ну как бы в субботу с воскресеньем тоже грешновато...

Ответить
4

Комментарии в коде страниц TJ.

Ответить
7

А еще, на каждой странице зачем-то грузится логотип dtf и еще парочка

Ответить
2

PHР заебись!

Ответить
4

По коду в исходном посте. Работает это так:
a = 3; b = 2; // a = 11; b = 10 - в двоичной
a = a xor b; // 11 xor 10 = 01 -> 1
b = b xor a; // 10 xor 01 = 11 -> 3
a = a xor b; // 01 xor 11 = 10 -> 2

Переводим числа в двоичную, делаем побитовый xor. К слову, преподаватель по базам данных рассказывал, что когда создавали Java, подобную задачу (своп без дополнительной переменной) давали программистам при отборе, чтобы найти людей с нестандартным мышлением. Правда или нет - я не знаю, но задача интересна для людей, которые еще не сталкивались с подобным

Ответить
3

Если кто забыл\не знал про то, почему это так работает:
"a ^= b ^= a ^= b" вычисляется справа налево.
a1 <- a ^ b
b1 <- b ^ a1 - т.е. b1 <- b ^ (a ^ b )
a2 <- a1 ^ b1 - т.е. (a ^ b) ^ (b ^ a ^ b)
b1 - это новое значение b, и a2 - новое значение a.
xor - операция ассоциативная и коммутативная, т.е. все скобки можно выкинуть и вычислять выражение в любом удобном порядке. Напоминаю, что
0 ^ 0 = 0
1 ^ 0 = 0 ^ 1 = 1
1 ^ 1 = 0.
Кроме того, есть интересные свойства(чекайте по табличке истинности выше):
x ^ x = 0 (всегда)
x ^ 0 = x
Получаем,
b ^ (a ^ b ) = b ^ b ^ a = 0 ^ a = a - это новое значение b.
(a ^ b) ^ (b ^ b ^ a) = (a ^ a) ^ (b ^ b) ^ b = 0 ^ 0 ^ b = 0 ^ b = b - это новое значение a.

Ответить
3

[a, b] = [b, a]

Ответить
2

То что в Bash внезапно true = 0. Если вдуматься, понятно откуда ноги растут, но встретиться с этим было крайне неожиданно.

Ответить
1

Учитывая, что из программирования я рисовал в школе в кубасике, да в uopilot ботов для игр в ВК писал, самая дичь которую я знаю это —-> https://screeps.com

Ответить
0

Использую обычно словесные аналоги, как в питоне. Мне кажется, что они более читабельные. Правда не знал, что есть and_eq и типа того.

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
7

#define straight gay

Ответить
0

И нахуя Араям на кдпв?

Ответить
0

это всё потому что ты из приложения сидишь

Ответить
0

Не, я из прямого эфира открыл. Вижу что на превью в ленте его нет и все же

Ответить
1

Ну вот так это тут работает, ///то тебе сказать

Ответить
0

прикольно, ничего сложного, но месье знает толк в извращениях.

Ответить
0

Как насчет подсайта "Разработка"?

Ответить
0

А что тут странного? Бинарная инверсия и маской выступают обе переменные друг для друга.

Ответить
0

Ну как бы да, и
3 > 2 > 1
=== false
тоже да, но
wat

Ответить
0

ЖС вам не питон!

Ответить
0

Это вам не то!

Ответить
0

Не обращайте внимания, здесь не на что смотреть, Анус нажал не ту кнопку.
PS при редактировании нельзя прикрепить картинку (

Ответить
0

Или удалить.

Ответить
0

Ну хотя бы можно уебать что-нибудь токсичное, чтобы нежный модератор сам удалил.

Ответить
0

Если хочешь, можем реально удалить. Вот что-что, а это я умею делать хорошо

Ответить
0

Не, нахуй надо, лучше кнопку добавить.

Ответить
0

какую? Удалить?

Ответить
0

Ага. Или "добавить картинку" или обе сразу.

Ответить
0

две картинки теперь нельзя вставить

Ответить
0

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

Ответить
0

он не грузит, потому что медиакомпоненты нельзя редактировать, только текстовое поле. Т.е если ты загрузил картинку или прикрепил видео или ссылку в виде кнопки, то это навсегда

Ответить
0

Я не грузил ничего до редактирования. Короче, это в любом случае звучит как сломанная хуйня.

Ответить
0

ну если не грузил, то добавить уже нельзя. А еще нельзя добавить два разных компонента, т.е фото + ссылка

Ответить
0

Обе сразу я про кнопки.

Ответить
0

Знаю как переименовать папку на рабочем столе.

Ответить
0

i = i++ + ++i;

Ответить
0

Из моего кода, в день, когда я думал жопой:

var dict = new Dictionary<string, Tuple<List<Tuple<Tuple<string, string>, List<string>>>, List<string>>>
{ {
currSection, new Tuple<List<Tuple<Tuple<string, string>, List<string>>>, List<string>>(new List<Tuple<Tuple<string, string>, List<string>>>(), new List<string>())
} };

https://github.com/NightmareZ/Makarov-INI-to-XML-Converter/blob/master/Program.cs

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byswn", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223677-0", "render_to": "inpage_VI-223677-0-130073047", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=cndo&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudv", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "ccydt", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvc" } } } ]
Узнавайте важные новости первыми
Подписаться на push-уведомления