Проблема №1:
- Код: Выделить всё
Private Sub problem1()
Dim a As Long, b As Long, c As Long,d As Long
a = 200
b = a * a 'b=40000
c = 200 * 200 'вызывает Overflow
d = 200 ^ 2 'd=40000
End Sub
Вроди бы обьявил все переменные как "лонг", результат - не так уж и велик, а вот при работе с литералами - возникает ошибка! Неужели результат операции "200 * 200" сначала пытается записатся в что-то типа Integer (-32,768 - 32,767)?
С другой стороны c = 200 ^ 2, что равносильно предыдущему (по крайней мере с математической точки зрения) - работает "на УРА"?
Проблема №2:
VB иногда само решает, где надо ставить в конце шеснадцатеричного числа "&", а где - НЕТ!
Например если набрать &HFF00FF& то редактор VB автоматически преобразует в &HFF00FF (мол ни к чему амперсанд в конце), а вот в некоторых случаях отсутствие "&" в конце НЕХ числа имеет роковое значение:
- Код: Выделить всё
Private Sub problem2()
MsgBox &HFF00FF And &HFF00& 'отображает 0 (и этот результат меня устраивает)
MsgBox &HFF00FF And &HFF00 'отображает 16711680 (совсем не то)
End Sub
Вопрос: Что означает & в конце НЕХ числа и как обьяснить такую существенную разницу в значениях.