OberonCore https://forum.oberoncore.ru/ |
|
Особенности целых типов https://forum.oberoncore.ru/viewtopic.php?f=29&t=1111 |
Страница 1 из 1 |
Автор: | Иван Горячев [ Понедельник, 04 Август, 2008 03:59 ] |
Заголовок сообщения: | Особенности целых типов |
Переводил тут модуля из Бутылки на ББ. На законное действие s := s * (-1) ББ упорно выдаёт ошибку. Начал проверять: Код: MODULE PrivNeg; PROCEDURE Do*; VAR s : SHORTINT; i : INTEGER; BEGIN i := 0 - i; s := 0 - s [x]<--Incompatible assigment END Do; END PrivNeg. Вопрос: насколько законна ошибка? И если законна, то почему только для SHORTINT, а для INTEGER ошибки нет? |
Автор: | Александр Ильин [ Понедельник, 04 Август, 2008 06:45 ] |
Заголовок сообщения: | Re: Особенности целых типов |
Я так понимаю, что поскольку унарного отрицания нет, а вычисления производятся на уровне INTEGER, то для присвоения необходимо использовать SHORT(). В ББ компилятор построже в этом плане, чем другие (XDS, Oberon, AOS). |
Автор: | Евгений Темиргалеев [ Понедельник, 04 Август, 2008 08:39 ] |
Заголовок сообщения: | Re: Особенности целых типов |
Ошибка вполне законна: Language Report писал(а): operator | first operand | second operand | result type
+ - * DIV MOD | <= INTEGER | <= INTEGER | INTEGER |
Автор: | Пётр Кушнир [ Понедельник, 04 Август, 2008 09:07 ] |
Заголовок сообщения: | Re: Особенности целых типов |
В "бутылке" ещё любят понаставить везде LONGINT, с которыми в ББ большинство встроенных функций не работает. Приходится заменять на INTEGER по всему тексту модуля. |
Автор: | Иван Горячев [ Понедельник, 04 Август, 2008 09:19 ] |
Заголовок сообщения: | Re: Особенности целых типов |
Пётр Кушнир писал(а): В "бутылке" ещё любят понаставить везде LONGINT, с которыми в ББ большинство встроенных функций не работает. Приходится заменять на INTEGER по всему тексту модуля. Ну так у них LONGINT 32 бита, что поделать. Автозамена вполне справляется |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |