#include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&main + (&exit - &main)*(j/1000))(j+1); }
Поддержи Openmeetings |
пятница, 23 марта 2012 г.
Подписаться на:
Комментарии к сообщению
(
Atom
)
1 комментарий :
вывод в stdout целых чисел от argc до 1000 включительно, разделенных переводом строки, после чего завершение с кодом 233. Например, если не указать аргументы в командной строке, то будет вывод целых чисел от 1 до 1000. Фокус в том, что выражение (j/1000) равно 0 при j < 1000 и равно 1 при j == 1000. Соответственно, будет либо происходить рекурсивный вызов main, либо вызов exit(1001), что, после обрезания до 8 бит, даст код завершения 233.
Отправить комментарий