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)
|