12 Aug 2026, 11:46 UTC862 views19 reactionsread 13 August 2026 💡 Clang умеет показывать AST, и это один из лучших способов реально понять, что компилятор видит в вашем C/C++ коде.
AST — это Abstract Syntax Tree, внутреннее представление программы после парсинга.
Например, простой код:
int x = a + b * 2;
для компилятора — не просто строка текста, а дерево примерно такого смысла:
VarDecl
└── BinaryOperator +
├── a
└── BinaryOperator *
├── b
└── 2
…
👍10🔥6🥰2❤1
10 Aug 2026, 14:00 UTC≈1,250 views5 reactionsread 13 August 2026 🎶 Оптимизированный аудиовизуализатор для Windows
Spectrum — это легковесный аудиовизуализатор на C++, который обрабатывает звук в реальном времени и выводит его в консоль без разрывов экрана. Он использует FFTW3 для анализа аудиосигналов и обеспечивает точное визуальное представление частот.
🚀 Основные моменты:
- Реализация на C++17 для Windows.
- Низкое использование CPU и памяти.
- Поддержка WASAPI для захвата си…
❤2👍2🔥1
9 Aug 2026, 10:24 UTC≈1,760 views24 reactionsread 13 August 2026 Photo
⚡️ Один `static` - три разных смысла. Добро пожаловать в C.
В C ключевое слово static меняет поведение в зависимости от того, где именно оно написано.
### 1. static у глобальной переменной
static int global;
Переменная имеет internal linkage - она доступна только внутри текущего .c файла.
Это удобный способ спрятать детали реализации модуля.
### 2. static внутри функции
void foo(void) {
static int count…
👍11🔥8❤4❤🔥1
8 Aug 2026, 11:01 UTC≈1,830 views24 reactionsread 13 August 2026 Photo
⚡️ Генератор случайных чисел всего из трёх XOR и сдвигов
В 2003 году Джордж Марсалья представил xorshift - один из самых простых и быстрых генераторов псевдослучайных чисел.
Классический xorshift32:
uint32_t xorshift32(void)
{
state ^= state << 13;
state ^= state >> 17;
state ^= state << 5;
return state;
}
Фактически весь алгоритм:
shift → XOR
shift → XOR
shift → XOR
При ненулевом начальном …
❤15🔥6👍2🥰1
6 Aug 2026, 21:16 UTC≈1,770 views19 reactionsread 13 August 2026 Photo
Keylogger в несколько строк C? Почти.
На самом деле это не «магия взлома», а raw mode в терминале.
Обычно терминал ждёт Enter и сам обрабатывает ввод.
А здесь программа отключает echo и canonical mode, поэтому видит каждое нажатие сразу.
Именно так работают редакторы, TUI-приложения и терминальные игры.
Важно: использовать только на своём вводе и в учебных целях. Перехват чужих клавиш - уже не программирование, а…
👍9❤🔥4🔥3❤2🥰1
6 Aug 2026, 19:37 UTC≈1,710 views16 reactionsread 13 August 2026 Photo
Лето, ИТ-Пикник и музыка известных артистов уже через несколько дней!
8 августа в Коломенском пройдет ИТ-Пикник.
В программе — выступления проекта LAB Антона Беляева, IOWA, Cream Soda, Pompeya, мартина и Совы.
А днем — научпоп-лекции, дискуссии об ИИ и больших языковых моделях, мастер-классы и интерактивы. Полезные знакомства и развлечения тоже будут.
Зарегистрироваться и узнать подробности можно на сайте меропри…
❤16
6 Aug 2026, 13:02 UTC≈1,770 views25 reactionsread 13 August 2026 Photo
Четыре строки делают сложение `float` заметно точнее
При последовательном сложении чисел с плавающей точкой часть младших битов теряется из-за округления. На больших массивах эта ошибка постепенно накапливается.
Алгоритм Кэхэна хранит потерянную часть в отдельной переменной и компенсирует её на следующем шаге:
float kahanSum(const float *nums, int count)
{
float sum = 0.0f;
float correction = 0.0f;
f…
❤16🔥8❤🔥1
6 Aug 2026, 11:01 UTC≈1,700 views14 reactionsread 13 August 2026 Photo
Оператор # в препроцессоре C превращает токены в строковые литералы ещё на этапе компиляции.
Никакого преобразования во время выполнения не происходит.
Ядро Linux использует этот трюк в макросах вроде WARN_ON(), чтобы вывести точное условие, которое не прошло проверку.
Вы пишете выражение один раз, а препроцессор автоматически генерирует соответствующую строку.
Один оператор - и ваши debug-сообщения остаются идеа…
❤🔥10🤷♂2❤1🔥1
5 Aug 2026, 14:03 UTC≈1,850 views34 reactionsread 13 August 2026 Photo
LEA в x86 выглядит как инструкция для адресов, но компиляторы часто используют её как скрытый калькулятор.
Формально LEA считает адрес без обращения к памяти:
lea eax, [rdi + 3]
Но по факту это обычная арифметика:
return x + 3;
Ещё хитрее:
lea eax, [rdi + rdi*4]
Это уже:
return x * 5;
Почему так делают?
Потому что x86-адресация умеет base + index * scale + offset, а LEA позволяет использовать эту ме…
❤21🔥11❤🔥2
4 Aug 2026, 11:04 UTC≈2,310 views20 reactionsread 13 August 2026 Photo
C++ enum class: безопасно, но местами раздражает
enum class даёт строгую типизацию и не позволяет случайно смешивать значения с обычными числами.
Но есть нюанс: даже если enum используется как набор флагов,
Flags::Read | Flags::Write
не скомпилируется.
Для |, &, ^, ~ придётся вручную определить операторы и приводить значения к базовому типу.
Это правильное поведение с точки зрения type safety, но бойлерплейта…
❤10👍6🔥4
2 Aug 2026, 12:00 UTC≈2,380 views34 reactionsread 13 August 2026 Photo
Doom в 1993 работал на 486 и 4 МБ RAM. А современные игры почему едят 16 ГБ?
Секрет был в BSP-дереве: уровень заранее делился на области, а движок во время рендера просто обходил дерево в нужном порядке. Без z-buffer, без лишней магии, без пересчёта видимости с нуля каждый кадр.
Кармак буквально заставил геометрию работать вместо железа.
Подписывайся, тут ещё много таких историй про код, который унижает современны…
🔥19❤7🎉6👏1🤣1
2 Aug 2026, 10:49 UTC≈2,200 views20 reactionsread 13 August 2026 Photo
🔥 Как найти младший установленный бит без цикла
Этот трюк возвращает позицию самого правого бита 1 в 32-битном числе:
static const int table[32] = {
0, 1, 28, 2, 29, 14, 24, 3,
30, 22, 20, 15, 25, 17, 4, 8,
31, 27, 13, 23, 21, 19, 16, 7,
26, 12, 18, 6, 11, 5, 10, 9
};
int lowest_set_bit(uint32_t v)
{
return table[((v & -v) * 0x077CB531U) >> 27];
}
Выражение v & -v изолирует младший установле…
👍10🔥7❤🔥2❤1
Showing the 12 most recent of 28 posts we hold for @cpluspluc. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked ≈ was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.