Миша пишет код
@misha_writes_code
1 293
printf и его параметры являются тьюринг полным языком. А это значит, что подобрав аргументы верно, можно реализовать любую вычислимую функцию. Ну или простыми словами - напрограммировать что угодно.
while(1) printf(.....)
%n, из-за которого printf кладет в соответствующий указатель количество напечатанных на данный момент символов. Что как раз и удается заабъюзить.%n позволяет сохранять результат промежуточных вычислений и используя его можно реализовать некоторые булевы операции (на самом деле все). В статье автор приводит пример OR и NOT. А эта пара операций является функционально полной - то есть с их помощью можно сделать булеву формулу, удовлетворяющую любой таблице истинности.
printf("%1$s%2$s%3$hhn", A, B, C)
C будет лежать A OR B. printf для крестиков ноликов после раскрытия всех макросов получается больше 100к символов в длину.Платформа использует файлы cookie для авторизации и сохранения настроек. Продолжая работу, вы соглашаетесь с нашей Политикой использования cookie.
Обсуждение 0
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram