Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   ЧАВО - Частые Вопросы и Ответы    >>    mulerr
   
 
 ERR. Почему умножение дает неверный результат   Sly Golovanov 27.12.1997

Как учитывать тип результирующего выражения для избежания ошибок переполнения.


 
 

Pascal FAQ created by SLY Golovanov, 2:5020/278.13 (slightly corrected by Valery Votintsev 2:5021/22) ============================================================================== Q:> Почему при умножении 2-х чисел получается неверный результат: var a,b:Word; l:LongInt; a:=1234; b:=567; l:=a*b; В l получается. 44318, а не 699678, как должно быть на самом деле. Это баг? A: Hет, это фича. Тип выражения определяется только типом входящих в него переменных, но не типом переменной, куда записывается результат. Если есть опасность переполнения, надо конвертировать тип явно: l:=LongInt(a)*b; --- * Origin: (2:5020/794.13)