Хитрости с битовыми операциями на примере языка Си

В случае, когда производительность критична, можно использовать различные средства оптимизации вычислений. Одним из таких средств являются битовые операции (если алгоритм уже не подразумевает их использование). Например, координаты в двухмерном пространстве…

Обложка: Хитрости с битовыми операциями на примере языка Си

Почему числовые типы данных в C имеют такой размер?

Каждый программист, которому приходилось писать на C или C-подобных языках, наверняка сталкивался с тем, что размер переменных одного и того же типа на разных машинах может быть различным. Немного разобравшись…

Соберите сервер из комплектующих

8cc — компилятор языка C

8cc — это компилятор для языка С. Он поддерживает все особенности С11 и вместе с тем его код настолько небольшой и простой, насколько это возможно. Исходный код есть на GitHub, или…

Реализации echo.c в разных ОС

Команда echo в Unix предназначена для отображения строки текста. Она просто выводит текст на стандартное устройство вывода. Далее представлена небольшая подборка реализаций этой команды на языке С в различных ОС.…

Учимся правильно оформлять код на C на примере open source проектов

В каждом проекте есть свои соглашения по написанию и оформлению кода. Некоторые менеджеры ограничиваются только базовыми правилами, некоторые составляют подробные списки рекомендаций. В некоторых проектах правил оформления кода нет совсем,…

Обложка: Учимся правильно оформлять код на C на примере open source проектов

Искусство упаковки структур в C

От переводчика Объем памяти и скорость процессора стремительно растет. Старые техники оптимизации применяются все меньше, и, в конце концов, забываются. Однако иногда возникают ситуации, когда опыт прошлых лет становится бесценным.…

Обложка: Искусство упаковки структур в C
Обложка: Самоизменяющаяся программа на C под x86_64

Самоизменяющаяся программа на C под x86_64

Зачем вообще может понадобиться писать программу, которая меняет свой код во время выполнения? Это ужасно! Да, да, я знаю. И все-таки, зачем? Ну, например, это хороший учебный пример. Но главная…

Значение ключевого слова volatile в C

Ключевое слово volatile информирует компилятор, что значение переменной может меняться извне. Это может произойти под управлением операционной системы, аппаратных средств или другого потока. Поскольку значение может измениться, компилятор каждый раз…

Обложка: Значение ключевого слова volatile в C

Найдите ошибки в следующем коде

Дан код: unsigned int i; for (i = 100; i >= 0; —i) printf(«%d\n», i); В коде есть две ошибки.

Обложка: Найдите ошибки в следующем коде

Обычно main — это функция. Но всегда ли это так?

Идея написать эту статью пришла мне в голову, когда одного из моих коллег заставили пройти начальный курс по CS в моем университете. Мы с ним искали способ написать корректную программу…

Обложка: Обычно main — это функция. Но всегда ли это так?

Какие ошибки могут вызывать падение приложения, написанного на C

У вас есть исходный код приложения, которое аварийно завершается после запуска. После десяти запусков в отладчике вы обнаруживаете, что каждый раз программа падает в разных местах. Приложение однопоточное и использует только стандартную…

Обложка: Какие ошибки могут вызывать падение приложения, написанного на C

auto в C

Вопрос Почему строка auto a = 1; воспринимается компилятором C как корректная? Я пользуюсь MS Visual Studio 2012, и вот этот код: int main(void) { auto a = 1; return…