Как стать автором
Обновить

Комментарии 48

Ну так это задание такое, между прочем, веселое.
Просто вспомнилась безобидная картинка. Критиковать задание я не собирался.
Вспомнился безобидный анекдот:
На собрании колхоза идут выборы нового председателя. Народ активно обсуждает одного успешного кандидата. Вдруг, какой-то колхозник встает и говорит:
— Мы не можем его выбрать. У него обе дочери б… ди.
Ему говорят:
— Но у него нет дочерей. У него только один сын.
Колхозник отвечает:
— Ну, мое дело сказать, а там вы сами уже решайте.
Хороший анекдот; кстати, весьма подошел бы к топику про пропаганду.
Благодаря вашему комменту я тоже прочитал этот замечательный топик. Спасибо!
на то и расчёт ;)
Там в середине кандидата прокатили с выборами из-за этого, слова сказать ему не давали, только после выбьоров он сказал, что нет дочерей.
Вас критикуют не потому что, картинка обидная, а потому что приелась. Попробуйте внести разнообразие.
Ну приелась картинка, ну был не прав. Но зачем сразу в карму то лезть? Просто хотел пошутить.
Перед тем как лезть в карму, лезут в ваш Хабрацентр. Заходят в посты и что видят? Ничего. Потом заходят в ответы. Что видят там? Тоже ничего. Более дотошные могут почитать ваши вопросы (которых тоже нет) и комментарии. После этого идёт оценка вашего вклада в сообщество, позволяет этот вклад так ошибаться с шутками, или нет. И только уже тогда дело доходит до кармы.
Эту картинку запостили на хабре уже 502 раза ссылка. Вы сделали 503й по абсолютному счету и первый настолько неуместный раз.
Их уже 505. Что-то мне подсказывает, что либо это число не точное, либо одно из двух.
Вполне можно было оформить статью как перевод, зачем делать пересказ от третьего лица, при том, что написано практически то же самое.
Это ализар, он никогда не пишет переводов. Вместо этого он делает пересказ практически того же самого от третьего лица. :)
Думая над тем, какую суть несёт ваш ответ — «Это ализар, и этим всё сказано» или «Это ализар, ему можно» — пришел к выводу, что правильное всего будет «Это хабр, и этим всё сказано».
Дык они же по ППА оцениваются дороже ;)
Ну так alizar же вроде в ППА и не участвует :-)
А я думал, что alizar давно в штате Хабра :)
Я предположил, что принцип оплаты там подобный — топики писать выгоднее, чем переводы. Прям Маяковкий своего времени;)
Маленькая по длине исходного текста или по объему исполняемого файла?
По-моему ответ очевиден.
Мне кажется, что постановка задачи «исходный код на С, который компилируется в самый маленький сбойный исполняемый файл» тоже может быть интересна
Да, может, но ответ на ваш вопрос всё же очевиден — длина конечной программы не рассматривалась в статье в принципе. Что-то мне подсказывает, что можно уложиться в ещё меньший размер, чем исходник в этой статье.
В Code::bloks с компилятором gcc просто main; не компилируется, а вот int main; работает так как нужно :)
А у меня на маке gcc съел:
f0b0s-osx:tmp f0b0s$ cat 1.c
main;
f0b0s-osx:tmp f0b0s$ gcc-4.7 1.c
1.c:1:1: warning: data definition has no type or storage class [enabled by default]
f0b0s-osx:tmp f0b0s$ ./a.out
Bus error: 10 (core dumped)
gcc и на Debian лишь ругается, но компилирует:
> gcc a.c
> a.c:1: warning: data definition has no type or storage class
> ./a.out
> Segmentation fault
Есть такое.

Проверил на MinGW 4.8.0 и msvc-9.0 — оба съели int main; и оба не съели main;
Вру! Под MinGW 4.8.0 и msvc-9.0 программа с кодом
main;

Компилируется и успешно падает.

Косяк был в том, что по умолчанию компилировал как C++ код. Если компилить как чистый C (о чем, кстати, указано в статье), все ок.
В оригинале ведь есть еще «Update»:
Hacker News user femto pointed out that it is possible to compile and link an empty file. I did not post this because gcc will refuse to compile and link the program – it requires compiling and linking separately.
Уже было на Хабре и намного раньше, чем это делал шведский студент, более того — в комментариях сами хабравчане довели вариант до идеала. Искать лень, но было, годах в 2011-2012.
Компилед спицефик, не более.
Попробуйте написать сбойную программу под весь зоопарк компиляторов, и чтобы он везде работал. И добавле в буст.
Угу, сделать boost::failure
Как-то на stackoverflow был задан вопрос, как в минимум кода получить исключение OutOfMemoryException (.net)? Ребята старались, пытались создать бесконечную строку, но победил такой ответ:
throw new OutOfMemoryException();
Это напоминает историю с функцией get_random_number().
НЛО прилетело и опубликовало эту надпись здесь
Вот, например, еще более короткая программа (вообще пустой файл), которую можно собрать специальным образом (gcc):

$ cat test.c
$ gcc -Wl,--unresolved-symbols=ignore-all test.c
$ ./a.out
Segmentation fault
Я писал такое в университете, но всё-равно мне никто не поверит.
… которая вылетает с ошибкой (segfault). Обычно студенты в таких ситуациях используют деление на ноль.
Если понимать буквально, то деление на ноль вызывает вовсе не segmentation fault, а SIGFPE.
Сегфолты связаны с ошибками обращения к памяти, и main=0 — как раз такой случай.
Джестер Огвист (Jesper Öqvist) — почему ДжесТер, почему ОГвист? Джеспер Оквист же, не?
Интересное задание, я призадумался. Написал бы наверное
int main()
{
unsigned long long* k = new unsigned long long[0xFFFFFFFF];
delete []k;//для очистки совести
return 0;
}

памяти нужно 2^3*(2^32-1) = 2^35 байт = 32 гб без малого при восприятии как unsigned. Иначе 0xFFFFFFFF=-1.
std::bad_alloc. по-любому.
Ребят, хватит делить на ноль, еще чуть-чуть и мы узнаем как вымерли динозавры.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории