Страница: 1 |
Страница: 1 |
Вопрос: Преобразование типов данных
Добавлено: 08.12.09 21:55
Автор вопроса: hip
Здравствуйте, люди добрые.
Столкнулся с такой проблемой. Есть две переменные типа Byte
В случае если x<y, при попытке проверки вот такого условия:
возникает ошибка "Overflow". Понятно, что результат вычисления выражения (x-y) будет в этом случае числом отрицательным, то есть совсем не Byte, и лечить это можно например так:
но раньше этот код у меня работал, и я уверен, ну на 90%, что бывал у меня x меньше y.
Галлюцинациями не страдаю, вроде. Объясните, пожалуйста, что я сделал не так?
Или в VB всегда так, и мне просто повезло, что я не спотыкался раньше об этот пробел в своих познаниях?
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
Саня
ICQ: 553816426
Вопросов: 10
Ответов: 99
Профиль | | #1
Добавлено: 08.12.09 22:03
А почему не
Номер ответа: 2
Автор ответа:
Саня
ICQ: 553816426
Вопросов: 10
Ответов: 99
Профиль | | #2
Добавлено: 08.12.09 22:19
Не могло это работать. Потому что результат выполнения арифметических действий над переменными одного типа, будет того же типа, что и переменные. Может раньше переменные Х и У небыли явно объявлены и имели тип variant? Или при выполнении программы Х никогда не был меньше?
Номер ответа: 3
Автор ответа:
hip
Вопросов: 3
Ответов: 22
Профиль | | #3
Добавлено: 08.12.09 22:44
По поводу (x-y)<0, там (x-y) частью другого выражения был, я суть проблемы хотел передать, вот и родил этот индусский код.
До меня, пока ответа ждал, начало вот это вот доходить. У меня переменные Integer были, я потом наткнулся на их определение и на Byte тип заменил, потому как Integer там ни к чему. Как менял помню, как работало после этого тоже помню.... вроде.
Срочно нужно отсыпаться, а то thrashing уже пошел.
Спасибо огромное!
Номер ответа: 4
Автор ответа:
Саня
ICQ: 553816426
Вопросов: 10
Ответов: 99
Профиль | | #4
Добавлено: 08.12.09 22:46
Бывает
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 10.12.09 22:08
Ребят, не жоптесь на целые числа в программе использовать тип Long, т.к. процессоры у вас 32-битные (как минимум) и если будете байт занимать. Все равно при вычислении процессор задействует 32-битный регистр целиком. Есть смысл еще ладно, когда API-функция тип byte требует (редко) или если надо в структуре байты представить, скажем компоненты 32-битных цветов при обработке графики, картинок, фото ...видео))) А что?)))