qwaker.00's blog

By qwaker.00, 13 years ago, In Russian

Введение

Тема будет интересна всем, но познать её смогут только "счастливые" обладатели компилятора в популярном пакете 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

Dev-cpp http://www.bloodshed.net/dev/devcpp.html

  • Vote: I like it
  • +19
  • Vote: I do not like it