Форум: "Потрепаться";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];
ВнизИнтересно почему Найти похожие ветки
← →
Не могу понять (2003-02-25 16:12) [0]Объясните мне почему на такую вещь компилятор ругается
...
var
a: extended;
...
a:=10000*8*32*1048576;
...
а на такую нет
...
var
a,b: extended;
...
b:=8*32*1048576;
a:=b*10000;
....
P.S. D6,Win2000
← →
Добрячок (2003-02-25 16:20) [1]ибо в первом случае он тут же видит переполнение или что там у тебя случается, а во втором он не знает шо Б на самом деле близка к критической массе ;)
← →
Makhanev A.S. (2003-02-25 16:21) [2][Error] Unit1.pas(30): Overflow in conversion or arithmetic operation
Переполнение в преобразовании или арифметической операции.
← →
Delirium^.Tremens (2003-02-25 16:28) [3]Потому, что в первом случае компилятор видит, что число выходит за рамки типа, а во втором при компиляции все в норме: ошибка возникнет в момент выполнения.
← →
han_malign (2003-02-25 16:28) [4]потому что компилятор пытается рассчитать целочисленную константу (что-бы потери точности не было) и возникает переполнение
a:=10000 .0*8*32*1048576;
- при рассчете вещественной константы все проходит на ура...
← →
Danilka (2003-02-25 16:31) [5]extended-у в данном примере до переполнения ой как далеко...
просто, он пытается все число сделать сначала integer-ом, а вот для него уэто уже слишком...
вобщем, вот-так не ругается:
a:=10000.0*8*32*1048576;
← →
Danilka (2003-02-25 16:31) [6]опередили :)))
← →
Не могу понять (2003-02-25 16:47) [7]О как !
Всем спасибо.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c