| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > проблемма с int64 в d7 |
| Автор: Чучмек 5.5.2012, 20:47 | ||
| Неделю бился с разбегу головой об столб. Как оказалось,на следующем коде:
Произведение дает правильный результат только, если хотя бы один из множителей int64 |
| Автор: XperT 6.5.2012, 01:25 | ||
| Так и должно быть: операции (умножения, деления и т.д.) происходят не одновременно над всеми переменными, а в конкретный момент времени над двумя, операция у которых имеет больший приоритет. Именно в момент проведения операции 2 переменных, если они разного типа, приводятся к одному (не знаю как это правильно объяснить, но получается что результующий тип будет определен по той переменной, размер типа которой больше). А так как операция присвоения имеет самый низкий приоритет, то приведения к типу int64 происходит в последнюю очередь. В общем должен решить проблему следующий код:
P.S. Если плохо объясняю, то сразу прошу прощения, лектор из меня никудышний |
| Автор: XperT 6.5.2012, 13:07 | ||
Да, я ошибся, то что я описал имеет место в Visual Studio. В Делфи компилятор действительно учитывает тип переменной в которую будет записан результат, иначе такая операция давала бы целочисельный результат: double := integer / integer. По всей видимости вы правы, компилятор просто приводит все к 32 битам, если в операции не участвуют переменные большего размера. |