Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.25;
Скачать: CL | DM;

Вниз

Константные выражения   Найти похожие ветки 

 
Виктор Щербаков ©   (2002-03-19 13:44) [0]

procedure TForm1.Button1Click(Sender: TObject);
const a = 3 / 0;
begin
Caption := FloatToStr(a);
end;

Интересно, почему при компиляции не выдается ошибка "деление на ноль". Вместо этого при нажатии на Button1 в Caption формы появляется INF. Есть в этом какой-то смысл или просто глюк?

ЗЫ: Проверял на D5


 
DieHard ©   (2002-03-19 14:08) [1]

Хм, на D4 то же самое...


 
Фэ ©   (2002-03-19 14:10) [2]

Занятно.
3 div 0 не пропускается, однако.


 
Виктор Щербаков ©   (2002-03-19 14:13) [3]

Сейчас проверил на D3. Та же фигня.
Если разработчикам Borland нужен был символ для обозначения бесконечности, сделали бы его предопределенной константной как nil, true, false. Пусть программист явно его укажет.
А так, только ошибки плодить!


 
MBo ©   (2002-03-19 14:14) [4]

const
c=3;
d=0;
a = c / d;
e = c div d;// а эта строчка не проходит ;)


 
DieHard ©   (2002-03-19 14:20) [5]

А почему
const
a = Int(3);
не проходит?
Int ведь определена как дозволительная в константных выражениях


 
Виктор Щербаков ©   (2002-03-19 14:24) [6]

Int не разрешена.
Можно только:
Abs Chr Hi High Length Lo Low Odd Ord Pred Round SizeOf Succ Swap Trunc


 
DieHard ©   (2002-03-19 14:25) [7]

Извиняюсь, не заметил в хелпе слово except перед пречислением функций :)


 
DieHard ©   (2002-03-19 14:35) [8]

Итак, константы от Borland
1/0 = +INF
-1/0 = -INF
0/0 = -NAN
-(0/0) = +NAN


 
Фэ ©   (2002-03-19 14:42) [9]

Насчет NAN известно, а вот INF первый раз попалась


 
Иван Шихалев ©   (2002-03-19 21:20) [10]

Эти константы правда у Borland определены? А то, AFAIK, они замечательно определены в ассемблере i387, но в Pascal я их не помню.


 
Юрий Зотов ©   (2002-03-19 21:26) [11]

Век живи - век учись...

Интересно, а опция overflow checking {$Q+} на это как-то влияет, или нет?


 
Anatoly Podgoretsky ©   (2002-03-19 21:54) [12]

Виктор Щербаков © (19.03.02 13:44)

Глюка нет все нормально, ситуация разрешается на стадии компиляции, а ошибка "деление на ноль" это run-time ошибка.



Страницы: 1 вся ветка

Текущий архив: 2002.04.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
14-81085
VictorT
2002-03-13 14:36
2002.04.25
Болванка с картинкой


3-80808
kosty
2002-04-05 12:21
2002.04.25
Не вставлять одинаковые строки


1-80952
Rammst
2002-04-12 06:42
2002.04.25
Кодировки


1-80917
hm
2002-04-11 12:35
2002.04.25
RichEdit


1-81001
Chainik
2002-04-12 20:11
2002.04.25
наименование файла в заглавной строке формы