На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> тип числа -2147483648#
    Почему VB к нему старательно лепит тип Double, даже когда я явно пишу -2147483648&? При этом &H80000000 VB не трогает.
      Хм... похоже на баг.
      Так работает:
      CLng("-2147483648")
        да работает и так:
        ExpandedWrap disabled
          lCount As Long
          lCount = -2147483648#


        вопрос в том, что у меня нет каких-то фиксов или что это такое?

        Добавлено
        т.е. я пишу в коде:
        lCount = -2147483648

        VB правит на:
        lCount = -2147483648#
        Сообщение отредактировано: BlackSun -
          Цитата Akina @
          Он выбирает ближайший подходящий тип.

          Во-первых, Long тоже подходящий, по каким признакам Double оказался ближайшим? Почему для -2147483647 ближайший Long, а для -2147483648 уже Double?
          Во-вторых, среда VB6 исправляет на Double даже принудительно обозначенный Long (-2147483648&), вот это я назвал багом.
          Сообщение отредактировано: Mikle -
            Цитата Mikle @
            Хм... похоже на баг.

            Да. Насколько я понял VB6 при разборе считает - (минус) и число разными сущностями и пытается 2147483648 преобразовать в знаковый (VarI4FromStr) и получает ошибку, поэтому после он уже пытается преобразовать 2147483648 как R8. Обойти очень просто: -2147483647 - 1, но хитрыми методами можно и обойти:
            Прикреплённая картинка
            Прикреплённая картинка
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0426 ]   [ 19 queries used ]   [ Generated: 19.03.24, 03:57 GMT ]