IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Исключения FPU
TarasBer
сообщение 18.06.2010 10:20
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Создаю тут, потому что мне кажется, что это относится к асму.


{$APPTYPE CONSOLE}

var
a: extended;
begin
a := sqrt(-1);
writeln(a);
readln;
end.




Я хочу, чтобы это программа вывела на экран NAN. Меня вполне устраивает значение "не число". Неопределённый результат - тоже результат, что такого-то. Но программа вылетает. Причём вылет происходит не в момент вычисления корня, а при выгрузке результата в память. Что надо сделать, чтобы программа не вылетала? (Вариант writeln('NAN') - не предлагать).


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 18.06.2010 12:39
Сообщение #2


Гость






Цитата
а вот почему делить на ноль можно (и безо всякого исключения получить +inf или -inf, в зависимости от знака делимого)
Правда что-ли? А мужики-то не знают:
var
a, b: extended;
begin
b := 0.0;
a := -1.23;

a := a / b;
writeln(a);
readln;
end.

Что будет выведено на печать? Что-нибудь ВООБЩЕ будет выведено? (если что, меня древние версии ПО мало интересуют, за заявлением "делить на 0 можно" стоит утверждение, что процессор в принципе не производит никаких исключительных действий, которые ловятся программой. Значит, я должен получить результат -inf, откомпилировав код ЛЮБОЙ версией Дельфи и запустив программу. Договорились. Стандартные настройки, Дельфи 2009/2010. Вопрос - прежний, что я увижу на экране?)

А вот так:
uses math, sysutils;
var
a, b: extended;
begin
b := 0.0;
a := -1.23;

try
a := a / b;
except
on E: Exception do
begin
writeln(e.ClassName);
end;
end;

writeln(a);
readln;
end.
? Что я теперь увижу? (если "без исключений" - значит, я не должен видеть ничего, кроме как -inf?)
 К началу страницы 
+ Ответить 

Сообщений в этой теме
TarasBer   Исключения FPU   18.06.2010 10:20
volvo   Не имеет это никакого отношения к ассемблеру. И Де...   18.06.2010 11:26
TarasBer   Я в курсе про обработку исключений. Но в данном сл...   18.06.2010 11:49
volvo   Костыль будет, если отключить обработку исключения...   18.06.2010 11:55
TarasBer   Дело в том, что я хочу вывести график некой функци...   18.06.2010 11:58
volvo   То, что не было зарезервированных слов try/except ...   18.06.2010 12:03
TarasBer   Кстати, а вот почему делить на ноль можно (и безо ...   18.06.2010 12:18
volvo   Правда что-ли? А мужики-то не знают: var a, b: e...   18.06.2010 12:39
TarasBer   И вправду вылетает. Да, мне теперь самому интересн...   18.06.2010 12:53
volvo   Упоминание о подобной проблеме присутствует на фор...   18.06.2010 17:53
TarasBer   uses OpenGL;   19.06.2010 13:07
volvo   Что Uses OpenGL? Не делай Uses OpenGL... Смысла ...   20.06.2010 13:53
volvo   Ах, ты о том, что при использовании модуля OpenGL ...   20.06.2010 14:24
TarasBer   > Так, это само собой: в секции инициализации м...   20.06.2010 16:23


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 7:08
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"