Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[54.221.159.188] |
|
Сообщ.
#1
,
|
|
|
Почему VB к нему старательно лепит тип Double, даже когда я явно пишу -2147483648&? При этом &H80000000 VB не трогает.
|
Сообщ.
#2
,
|
|
|
Хм... похоже на баг.
Так работает: CLng("-2147483648") |
Сообщ.
#3
,
|
|
|
да работает и так:
lCount As Long lCount = -2147483648# вопрос в том, что у меня нет каких-то фиксов или что это такое? Добавлено т.е. я пишу в коде: lCount = -2147483648 VB правит на: lCount = -2147483648# |
Сообщ.
#4
,
|
|
|
Во-первых, Long тоже подходящий, по каким признакам Double оказался ближайшим? Почему для -2147483647 ближайший Long, а для -2147483648 уже Double? Во-вторых, среда VB6 исправляет на Double даже принудительно обозначенный Long (-2147483648&), вот это я назвал багом. |
Сообщ.
#5
,
|
|
|
Цитата Mikle @ Хм... похоже на баг. Да. Насколько я понял VB6 при разборе считает - (минус) и число разными сущностями и пытается 2147483648 преобразовать в знаковый (VarI4FromStr) и получает ошибку, поэтому после он уже пытается преобразовать 2147483648 как R8. Обойти очень просто: -2147483647 - 1, но хитрыми методами можно и обойти: Прикреплённая картинка
|