OberonCore https://forum.oberoncore.ru/ |
|
Почему тип BYTE нельзя увеличить на 1? https://forum.oberoncore.ru/viewtopic.php?f=35&t=6106 |
Страница 1 из 1 |
Автор: | Александр К [ Вторник, 19 Сентябрь, 2017 08:19 ] |
Заголовок сообщения: | Почему тип BYTE нельзя увеличить на 1? |
Код: VAR a: BYTE;
BEGIN a := a +1;(*Сдесь почему-то КП выдаёт ошибку о несовместимости типов*) |
Автор: | Пётр Кушнир [ Вторник, 19 Сентябрь, 2017 11:44 ] |
Заголовок сообщения: | Re: Почему тип BYTE нельзя увеличить на 1? |
Потому что целочисленные константы имеют тип INTEGER. Кажется, в данном случае можно использовать INC() |
Автор: | Comdiv [ Вторник, 19 Сентябрь, 2017 11:44 ] |
Заголовок сообщения: | Re: Почему тип BYTE нельзя увеличить на 1? |
Вычисления с малыми целыми неявно приводятся к типу INTEGER. При этом неявное приведение от большего типа к меньшему при присваивании не производится. Необходимо явно производить укорачивание. Код: a := SHORT(SHORT(a + 1)) Ну и проверять на переполнение нужно Код: IF a <= MIN(BYTE) - 1 THEN a := SHORT(SHORT(a + 1)) ELSE (*overflow*) END Также, весьма вероятно, что и не нужно использовать BYTE в конкретном случае. |
Автор: | prospero78 [ Среда, 04 Октябрь, 2017 15:45 ] |
Заголовок сообщения: | Re: Почему тип BYTE нельзя увеличить на 1? |
Пётр Кушнир писал(а): Потому что целочисленные константы имеют тип INTEGER. Кажется, в данном случае можно использовать INC() Ну ты монстр!)) Научи меня константы инкрементировать!)) Александр К писал(а): Почему тип BYTE нельзя увеличить на 1? Ответ по существу выше, а от себя добавлю, что занимался рассмотрением вопроса размещения структур в памяти, и выяснил, что упаковать BYTE в структуру компактно можно, но использовать BYTE сам по себе внутри КП -- нет никакого смысла. Тоже самое касается и использования математики из модуля SMath (shor matematick) -- никакого выигрыша в укорачивании типа REAL. |
Автор: | Kemet [ Среда, 04 Октябрь, 2017 17:23 ] |
Заголовок сообщения: | Re: Почему тип BYTE нельзя увеличить на 1? |
prospero78 писал(а): Ну ты монстр!)) Константа там одно из слагаемых, в частности единица, НА которую увеличивают.
Научи меня константы инкрементировать!)) |
Автор: | prospero78 [ Четверг, 05 Октябрь, 2017 12:32 ] |
Заголовок сообщения: | Re: Почему тип BYTE нельзя увеличить на 1? |
Формулировку ещё раз внимательно почитай. Речь идёт про увеличение константы, а не на константу. |
Автор: | Valery Solovey [ Четверг, 05 Октябрь, 2017 14:01 ] |
Заголовок сообщения: | Re: Почему тип BYTE нельзя увеличить на 1? |
Kemet всё правильно говорит. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |