OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 13:31

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 19 Сентябрь, 2017 08:19 

Зарегистрирован: Воскресенье, 06 Август, 2017 19:33
Сообщения: 79
Код:
VAR a: BYTE;
BEGIN
a := a +1;(*Сдесь почему-то КП выдаёт ошибку о несовместимости типов*)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Сентябрь, 2017 11:44 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Потому что целочисленные константы имеют тип INTEGER.
Кажется, в данном случае можно использовать INC()


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Сентябрь, 2017 11:44 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Вычисления с малыми целыми неявно приводятся к типу INTEGER.
При этом неявное приведение от большего типа к меньшему при присваивании не производится.
Необходимо явно производить укорачивание.
Код:
a := SHORT(SHORT(a + 1))

Ну и проверять на переполнение нужно
Код:
IF a <= MIN(BYTE) - 1 THEN
  a := SHORT(SHORT(a + 1))
ELSE
  (*overflow*)
END

Также, весьма вероятно, что и не нужно использовать BYTE в конкретном случае.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Октябрь, 2017 15:45 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Пётр Кушнир писал(а):
Потому что целочисленные константы имеют тип INTEGER.
Кажется, в данном случае можно использовать INC()

Ну ты монстр!))
Научи меня константы инкрементировать!))

Александр К писал(а):
Почему тип BYTE нельзя увеличить на 1?

Ответ по существу выше, а от себя добавлю, что занимался рассмотрением вопроса размещения структур в памяти, и выяснил, что упаковать BYTE в структуру компактно можно, но использовать BYTE сам по себе внутри КП -- нет никакого смысла. Тоже самое касается и использования математики из модуля SMath (shor matematick) -- никакого выигрыша в укорачивании типа REAL.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 04 Октябрь, 2017 17:23 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 717
Откуда: Барнаул
prospero78 писал(а):
Ну ты монстр!))
Научи меня константы инкрементировать!))
Константа там одно из слагаемых, в частности единица, НА которую увеличивают.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Октябрь, 2017 12:32 
Аватара пользователя

Зарегистрирован: Воскресенье, 12 Апрель, 2015 18:12
Сообщения: 1134
Откуда: СССР v2.0 rc 1
Формулировку ещё раз внимательно почитай. Речь идёт про увеличение константы, а не на константу.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 05 Октябрь, 2017 14:01 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Kemet всё правильно говорит.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB