Название: Искусство программирования (задача 13) Отправлено: vimmax от Апрель 16, 2008, 02:36:44 Напишите программу на С (С++) которая вылетит с эксцепшеном.
Программа должна быть минимального размера. Название: Re: Искусство программирования (задача 13) Отправлено: naxellar от Апрель 16, 2008, 02:55:33 Код: (cpp) void main() { Название: Re: Искусство программирования (задача 13) Отправлено: Alder от Апрель 16, 2008, 03:00:58 Код: (c) int main(int argc, char* argv[]) Код Некса короче :) Название: Re: Искусство программирования (задача 13) Отправлено: vimmax от Апрель 16, 2008, 04:00:38 naxellar отрабатывает нормально в VC6, без ошибок.
Alder прерывается с ошибкой, но надо еще меньше кода. Название: Re: Искусство программирования (задача 13) Отправлено: EvilMax от Апрель 16, 2008, 05:58:15 Код: (c) void main() { Вариация на тему: Код: (c) void main() { Название: Re: Искусство программирования (задача 13) Отправлено: Sochin от Апрель 16, 2008, 06:09:28 В языке С нет исключений.
Вот вам гарантированное исключение С++ Код: (cpp) void main(){throw 1;} Название: Re: Искусство программирования (задача 13) Отправлено: EvilMax от Апрель 16, 2008, 06:37:52 В языке С нет исключений. Ясное дело. Но по формулировке вопроса и комментариям vimmax я понял, что нужно добиться аварийного завершения программы.А код у тебя действительно получился самый короткий :) Название: Re: Искусство программирования (задача 13) Отправлено: naxellar от Апрель 17, 2008, 01:08:16 vimmax, я в VS2008 пробовал. Компилятор не указывали, значит текущий, значит мой :P ибо устревшее не катит. ;)
Название: Re: Искусство программирования (задача 13) Отправлено: LazarusLong от Апрель 17, 2008, 01:26:27 naxellar, вот именно, раз компилятор не оговоривался, то речь шла именно о языке С++, значит ориентироваться нужно не на какой-либо компилятор, а на стандарт языка С++.
Название: Re: Искусство программирования (задача 13) Отправлено: naxellar от Апрель 17, 2008, 01:51:03 LazarusLong, дык стандарт не описывает, где возникнет исключение, где программа вылетит... Все зависит от того, как понимает код компилятор.
Название: Re: Искусство программирования (задача 13) Отправлено: Артем от Апрель 17, 2008, 07:19:29 int main(int argc, char* argv[]) { int *f; return *f; } Alder прерывается с ошибкой, но надо еще меньше кода. vimmax, а у меня на Borland C++ 3.11 код Alder'a отрабатывает нормально без каких-либо ошибок :) Код EvilMax'a у меня тоже работает и не вызывает аварийного завершения работы. Borland C++ 3.11 рулит ! :PНазвание: Re: Искусство программирования (задача 13) Отправлено: LazarusLong от Апрель 17, 2008, 09:27:44 Гарантированно вызовет исключение лишь код Sochin'a )))
Название: Re: Искусство программирования (задача 13) Отправлено: EvilMax от Апрель 17, 2008, 11:48:35 artem90, угу, ибо ДОСу по барабану доступ к памяти, которую не отвели. На самом деле, даже если спорить о формулировке условия задачи, код Sochin'a самый короткий.
Название: Re: Искусство программирования (задача 13) Отправлено: vimmax от Апрель 17, 2008, 04:48:19 Sochin чисто программистский код) нормально.
только у меня другой вариант. Кто догадается? у меня вываливается с Stack overflow Название: Re: Искусство программирования (задача 13) Отправлено: LazarusLong от Апрель 17, 2008, 05:46:57 Под рукой компилятора никакого нет, но в голову почему-то лезет всякий бред типа
Код: (cpp) void main() (Отправлено в: 17 Апреля 2008, 17:44:51) Онлайн-компилятор (http://www.interstron.ru/text.asp?id=2102) откомпилил без ошибок, а при запуске программа вылетела )))) Цитировать C/C++ Front-end Compiler & Virtual Machine, Version 3.0. Copyright (c) 1998-2003, Interstron, Ltd. *** C++ FrontEnd Warnings: 0 Errors : 0 Fatal : 0 RetCode : 0 *** VM execute start program 'D:\soft\compiler\tmp\test.cpp.ir' Fatal: INTERNAL ERROR!!!, Code: 8192376 NODE N: 91461, Type=4, Source: main() , File Name: D:\soft\compiler\tmp\test.cpp.9, Str: 2, Pos: 17 NODE N: 91461, Type=4, Source: main() , File Name: D:\soft\compiler\tmp\test.cpp.9, Str: 2, Pos: 17 Elapsed time = 1563 msec = 1 sec Название: Re: Искусство программирования (задача 13) Отправлено: vimmax от Апрель 17, 2008, 06:12:51 LazarusLong угу, точно, у меня такой ответ.
Только не знаю кому ставить +1 теперь. Название: Re: Искусство программирования (задача 13) Отправлено: Alder от Апрель 17, 2008, 06:17:10 vimmax, считай посимвольно :)
Название: Re: Искусство программирования (задача 13) Отправлено: Fr0sT от Апрель 17, 2008, 06:19:32 А вот Builder 6 не компилит этот код
Цитировать [C++ Error] File1.cpp(2): E2120 Cannot call 'main' from within the program Название: Re: Искусство программирования (задача 13) Отправлено: Alder от Апрель 17, 2008, 06:22:25 vimmax, думаю задачу стоит усложнить - код должен вываливаться как минимум в 3 разных компилерах - BC 3.1, Builder6, MS VC++.
Название: Re: Искусство программирования (задача 13) Отправлено: EvilMax от Апрель 17, 2008, 07:14:44 Код: (c) void main() { Stack overflow :D Название: Re: Искусство программирования (задача 13) Отправлено: Артем от Апрель 17, 2008, 07:26:54 void main() { А в BC 3.11 такое даже "строгий :)" компилятор не пропускает: "Array size too large" :Dchar a[10000000L]; } Stack overflow Название: Re: Искусство программирования (задача 13) Отправлено: Sochin от Апрель 18, 2008, 09:48:01 А вот Builder 6 не компилит этот код Совершенно верно не компилит. Стандарт С++ запрещает вызов функции main() из программы. Любой компилятор С++, который это позволяет не то что не соответствует требованиям стандарта, но прямо их нарушает.Цитировать [C++ Error] File1.cpp(2): E2120 Cannot call 'main' from within the program Название: Re: Искусство программирования (задача 13) Отправлено: vimmax от Апрель 21, 2008, 07:16:32 Sochin +1. Его ответ более всего удовлетворяет условию задачи.
Название: Re: Искусство программирования (задача 13) Отправлено: Артем от Май 01, 2008, 11:27:58 С таким кодом вываливается даже 3.11-ый :D
Код: (cpp) class A Название: Re: Искусство программирования (задача 13) Отправлено: LazarusLong от Май 01, 2008, 12:27:46 artem90, Билдер и BC 3.11 нормально скомпилировали и запустили этот код. Если же пытаться объявить объект этого класса, то вполне прогнозируемо программа не компилируется (невозможно вызвать приватный конструктор). Но ошибка компиляции и ошибка времени выплонения - это разные вещи :)
Название: Re: Искусство программирования (задача 13) Отправлено: Артем от Май 01, 2008, 03:22:10 Билдер и BC 3.11 нормально скомпилировали и запустили этот код. Если же пытаться объявить объект этого класса, то вполне прогнозируемо программа не компилируется (невозможно вызвать приватный конструктор) У меня BC 3.11 под Windows при попытке скопилировать и запустить эту программу выдает сообщение об ошибке, с одной лишь кнопкой "Закрыть", по нажатию на которую компилятор закрывается. А 3.11 под DOS при попытке скомпилить или запустить этот код просто выкидывает в Windows. И это уже ошибка на этапе выполнения, а ошибки компиляции у меня никакой нет. Название: Re: Искусство программирования (задача 13) Отправлено: LazarusLong от Май 01, 2008, 03:55:46 Ну и все равно:) Ничего криминального в объявлении такого класса нет. Ну ясно что объявление в приватной части класса конструктора по умолчанию и дружественной функции по меньшей мере странно но не смертельно. У тебя прсто функции main() нет. Допиши её и все будет нормально запускаться. Сам по себе такой код не смертелен. Билдер, к примеру, говорит при попытке собрать такой код: Linker error: unresolved external main и программа просто не запускается :)
Название: Re: Искусство программирования (задача 13) Отправлено: Артем от Май 01, 2008, 07:47:54 У тебя прсто функции main() нет. Допиши её и все будет нормально запускаться. Хоть с меином, хоть без меина, хоть в ДОСе, хоть в Винде, но этот код 3.11-ый не запустит нигде !!! :)Название: Re: Искусство программирования (задача 13) Отправлено: LazarusLong от Май 01, 2008, 08:25:36 artem90, С++Builder этот код запускает. И TC 3.11 тоже. ВизуалСтудии под рукой сейчас нет, но, думаю она тоже запустит.
(Отправлено в: 01 Мая 2008, 20:17:42) А mingw просто не компилит этот код с ошибкой:) ISO C++ forbids declaration of b with no type Название: Re: Искусство программирования (задача 13) Отправлено: Артем от Май 01, 2008, 08:37:53 С++Builder этот код запускает. И TC 3.11 тоже. ВизуалСтудии под рукой сейчас нет, но, думаю она тоже запустит. Ну значит это просто глюк Борланда :) |