Как работает код на странице 404 StackOverflow? (Картинка включена) - PullRequest
5 голосов
/ 21 февраля 2012

Все видели это раньше, но что это за код? Я даже не знаю, на каком языке пометить это. Может ли кто-нибудь расшифровать это?

enter image description here

Примечание. Я бы опубликовал это на мета, но это вопрос программирования, просто притворился, что я сказал: "Я нашел этот загадочный код где-то ..."

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Все строки, кроме четвертой строки, отмечены #. Четвертая строка просто печатает 404.

И тут я подумал, что это какой-то сумасшедший #define макрос.

Исходное сообщение здесь: https://meta.stackexchange.com/questions/27112/amusing-404-page-not-found-images-for-trilogy-sites

Также здесь можно увидеть: https://meta.stackexchange.com/questions/28625/whats-the-joke-in-the-stack-overflow-404-page-code

1 голос
/ 21 февраля 2012

Неважно, я понял:

1: макрос компилятора для v -> putchar

2: макрос компилятора для замены print (x) на:

-

main(){
    putchar( 4 + putchar(putchar(52) - 4);
    return 0;
}
/* comment garbage from line 3 */

4: вызывает print(202*2), но макрос 202*2 выбрасывается; просто вставьте сюда основной

5: переопределяет exit() как ничто.

Окончательная предварительная обработка программы - это все, что определено в строке 2.

putchar возвращает значение, которое он напечатал, поэтому он сначала печатает ascii 52, который равен «4», затем он печатает «0», возвращая символ 0, который затем добавляется к 4 и, наконец, печатается из самого внешнего printchar ,

Очевидно, что конечный результат - 404, но я был разочарован тем, что большая часть кода является просто закомментированным мусором, а не фактическими интересными языковыми причудами. Единственная действительно интересная вещь, которую я предполагаю, состоит в том, что putchar возвращает значение печатного символа, но даже тогда ...

Редактировать

Я действительно злюсь на себя за то, что не думаю, что это как python, perl, ruby ​​или php: \

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...