Введение
Тема будет интересна всем, но познать её смогут только "счастливые" обладатели компилятора в популярном пакете dev-cpp для windows. На самом деле среду эту я не люблю и не пользуюсь никогда в силу жуткий глюков и тормозов, но как-то она мне попалась на первых парах изучения C и поэтому до сих пор используется мною как средство установки на комп консольных компилятора g++ и отладчика gdb. Быстро, удобно, бесплатно и всегда под рукой в интернете.
Сабдж
Собственно речь сейчас не идёт о прелестях этого старого приложения. Многие слышали о магии С++, многие её отведали, многие сваливают на неё ошибки в своем коде во время контестов. Ниже, представлен один из примеров подобного заклинания, о возможности компиляции которого даже приходится задуматься, не говоря уже о результате выполнения. Внимание! Уберите от экранов слабонервных, детей и паскальщиков:
char s[56] = "\xB8\1\0\0\0+\xD2\xB9\x1E\0\0\0Q\x8B\xC8\3\xC2\x8B\xD1PRh\x32 @\0\xA1" "\xD0P@\0\x83\xC0 P\xFF\x15\xE8P@\0\x83\xC4\bZXY\xE2\xDB\xC3%\x75\n"; int main(){ (((void(*)())(char*)s)()); return 0; }
Не думаю, что кто-то из ныне живущих людей на планете сможет с уверенностью сходу сказать, что этот код делает. Код без привычных #include. Состоящий буквально из одной строки кода. Он также врядли сделает что-то полезное на других компиляторах, но вот Dev-cpp и его GNU C++ 3.4.2 вполне согласен со всем написанным и готов его корректно исполнить.
Так что же он делает, задаётся вопросом нетерпеливый читатель? Попробуйте сначала предположить что, а потом проверьте у себя на машине. :)
Найдутся люди, которые вникнут в происходящее и даже смогут модифицировать текущий код. В любом случае пост по объяснению происходящего организовать могу. :)
Ссылки
Собственно код http://pastebin.com/w9pyjAtm