КИТА unofficial
Ноябрь 26, 2024, 03:58:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   ПРАВИЛА Помощь WIKI PDA Войти Регистрация  


Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Искусство программирования (задача 13)  (Прочитано 17895 раз)
Описание темы: Unhandled exception
0 Пользователей и 1 Гость смотрят эту тему.
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« : Апрель 16, 2008, 02:36:44 »

Напишите программу на С (С++) которая вылетит с эксцепшеном.
Программа должна быть минимального размера.
« Последнее редактирование: Апрель 23, 2008, 11:28:56 от vimmax » Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
naxellar
Главный флудер
Проректор
*****

Карма: +101/-52
Offline Offline

Пол: Мужской
Сообщений: 5015

Главный флудер


« Ответ #1 : Апрель 16, 2008, 02:55:33 »

Код: (cpp)
void main() {
int* z = z;
}
Записан
Alder
Администратор
Проректор
*****

Карма: +331/-16
Offline Offline

Пол: Мужской
Награды:
За II место в конкурсе поэзии (весна-2007)2 место в фотоконкурсе \За II место в фотоконкурсе \3 место в фотоконкурсе \2 место в фотоконкурсе \Лучший знаток музыки 2009Лучший знаток музыки 2010
Сообщений: 11224


just for fun


WWW
« Ответ #2 : Апрель 16, 2008, 03:00:58 »

Код: (c)
int main(int argc, char* argv[])
{
int *f;
return *f;
}

Код Некса короче Улыбка
Записан

"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« Ответ #3 : Апрель 16, 2008, 04:00:38 »

naxellar отрабатывает нормально в VC6, без ошибок.
Alder прерывается с ошибкой, но надо еще меньше кода.
Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
EvilMax
Администратор
Завкаф
*****

Карма: +59/-0
Offline Offline

Пол: Мужской
Сообщений: 1072


Злой и страшный :)


« Ответ #4 : Апрель 16, 2008, 05:58:15 »

Код: (c)
void main() {
  *(int*)0 = 1;
}


Вариация на тему:
Код: (c)
void main() {
  (*(int*)0)++;
}
Получим гарантированный segmentation fault.
Записан

Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач...
---
Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #5 : Апрель 16, 2008, 06:09:28 »

В языке С нет исключений.

Вот вам гарантированное исключение С++
Код: (cpp)
void main(){throw 1;}
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
EvilMax
Администратор
Завкаф
*****

Карма: +59/-0
Offline Offline

Пол: Мужской
Сообщений: 1072


Злой и страшный :)


« Ответ #6 : Апрель 16, 2008, 06:37:52 »

В языке С нет исключений.
Ясное дело. Но по формулировке вопроса и комментариям vimmax я понял, что нужно добиться аварийного завершения программы.

А код у тебя действительно получился самый короткий Улыбка
Записан

Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач...
---
Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
naxellar
Главный флудер
Проректор
*****

Карма: +101/-52
Offline Offline

Пол: Мужской
Сообщений: 5015

Главный флудер


« Ответ #7 : Апрель 17, 2008, 01:08:16 »

vimmax, я в VS2008 пробовал. Компилятор не указывали, значит текущий, значит мой Показывает язык ибо устревшее не катит. Подмигивающий
Записан
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #8 : Апрель 17, 2008, 01:26:27 »

naxellar, вот именно, раз компилятор не оговоривался, то речь шла именно о языке С++, значит ориентироваться нужно не на какой-либо компилятор, а на стандарт языка С++.
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
naxellar
Главный флудер
Проректор
*****

Карма: +101/-52
Offline Offline

Пол: Мужской
Сообщений: 5015

Главный флудер


« Ответ #9 : Апрель 17, 2008, 01:51:03 »

LazarusLong, дык стандарт не описывает, где возникнет исключение, где программа вылетит... Все зависит от того, как понимает код компилятор.
Записан
Артем
sprata
Mодератор
Завкаф
*****

Карма: +40/-5
Offline Offline

Пол: Мужской
Сообщений: 1107


« Ответ #10 : Апрель 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 рулит !  Показывает язык
« Последнее редактирование: Апрель 17, 2008, 07:29:43 от artem90 » Записан
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #11 : Апрель 17, 2008, 09:27:44 »

Гарантированно вызовет исключение лишь код Sochin'a )))
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
EvilMax
Администратор
Завкаф
*****

Карма: +59/-0
Offline Offline

Пол: Мужской
Сообщений: 1072


Злой и страшный :)


« Ответ #12 : Апрель 17, 2008, 11:48:35 »

artem90, угу, ибо ДОСу по барабану доступ к памяти, которую не отвели. На самом деле, даже если спорить о формулировке условия задачи, код Sochin'a самый короткий.
Записан

Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач...
---
Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« Ответ #13 : Апрель 17, 2008, 04:48:19 »

Sochin чисто программистский код) нормально.
только у меня другой вариант.
Кто догадается?
у меня вываливается с Stack overflow
Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #14 : Апрель 17, 2008, 05:46:57 »

Под рукой компилятора никакого нет, но в голову почему-то лезет всякий бред типа

Код: (cpp)
void main()
{
      main();
}


(Отправлено в: 17 Апреля 2008, 17:44:51)

Онлайн-компилятор откомпилил без ошибок, а при запуске программа вылетела ))))

Цитировать
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
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
vimmax
Модератор
Декан
*****

Карма: +42/-3
Offline Offline

Пол: Мужской
Награды:
лучшая гитара мира
Сообщений: 1713


♪♪ ♫ ♪♪ ♫ ♪♪ ♫ ♪♪


« Ответ #15 : Апрель 17, 2008, 06:12:51 »

LazarusLong угу, точно, у меня такой ответ.
Только не знаю кому ставить +1 теперь.

Записан

♪♪ ♫  LET FOREVER BE  ♫ ♪♪ ♫ ♪♪ ♪♪ ♫
Alder
Администратор
Проректор
*****

Карма: +331/-16
Offline Offline

Пол: Мужской
Награды:
За II место в конкурсе поэзии (весна-2007)2 место в фотоконкурсе \За II место в фотоконкурсе \3 место в фотоконкурсе \2 место в фотоконкурсе \Лучший знаток музыки 2009Лучший знаток музыки 2010
Сообщений: 11224


just for fun


WWW
« Ответ #16 : Апрель 17, 2008, 06:17:10 »

vimmax, считай посимвольно Улыбка
Записан

"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
Fr0sT
Очень добрый
Первак
*

Карма: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 45

ИУС 07


« Ответ #17 : Апрель 17, 2008, 06:19:32 »

А вот Builder 6 не компилит этот код
Цитировать
[C++ Error] File1.cpp(2): E2120 Cannot call 'main' from within the program
Записан

Видимо, какая-то постоянная величина оказалась немного переменной... (с) Йон Колфер
Alder
Администратор
Проректор
*****

Карма: +331/-16
Offline Offline

Пол: Мужской
Награды:
За II место в конкурсе поэзии (весна-2007)2 место в фотоконкурсе \За II место в фотоконкурсе \3 место в фотоконкурсе \2 место в фотоконкурсе \Лучший знаток музыки 2009Лучший знаток музыки 2010
Сообщений: 11224


just for fun


WWW
« Ответ #18 : Апрель 17, 2008, 06:22:25 »

vimmax, думаю задачу стоит усложнить - код должен вываливаться как минимум в 3 разных компилерах - BC 3.1, Builder6, MS VC++.
Записан

"There are things known and there are things unknown, and in between are the doors..." (Jim Morrison)
EvilMax
Администратор
Завкаф
*****

Карма: +59/-0
Offline Offline

Пол: Мужской
Сообщений: 1072


Злой и страшный :)


« Ответ #19 : Апрель 17, 2008, 07:14:44 »

Код: (c)
void main() {
char a[10000000L];
}

Stack overflow Смеющийся
Записан

Оптимальная концентрация кофе - это когда код уже дает советы, как его написать, но еще не спорит с тобой и не подкалывает в случае неудач...
---
Существует три способа распространения программного обеспечения: воровство, грабёж и обмен краденым. (c) Неизвестный программист
Страниц: [1] 2  Все   Вверх
  Печать  
 
Перейти в:  

Penguins Counter Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS! Internetmap
Страница сгенерирована за 0.062 секунд. Запросов: 36.