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/