OberonCore https://forum.oberoncore.ru/ |
|
Как работает явное преобразование целочисленных типов? https://forum.oberoncore.ru/viewtopic.php?f=22&t=6605 |
Страница 1 из 1 |
Автор: | budden [ Воскресенье, 26 Апрель, 2020 00:34 ] |
Заголовок сообщения: | Как работает явное преобразование целочисленных типов? |
Я запутался. Пытаюсь найти в существущем PDF (который WIP), но там нашлось только: Цитата: A type guard on numbers has been introduced. A guarded number is converted to the given type if and only if its value is not changed. When it fails (i.e. when the actual value of a number is not compatible to / cannot be represented by the type), a trap is raised. При этом: Код: MODULE Proba; IMPORT KernelLog, Commands; PROCEDURE Test*(c : Commands.Context); VAR i : UNSIGNED8; BEGIN i := 255; KernelLog.String("SIGNED64(i) "); KernelLog.Int(SIGNED64(i),0); KernelLog.Ln; KernelLog.String("SIGNED64(UNSIGNED16(i)) "); KernelLog.Int(SIGNED64(UNSIGNED16(i)),0); KernelLog.Ln; END Test; END Proba.Test Печатает в 32-разрядной Windows версии вот что: Код: SIGNED64(i) -4294967041 SIGNED64(UNSIGNED16(i)) 255 Пытался также посмотреть в сообщении об обычном Обероне, но там тоже как-то скупо. |
Автор: | Sergej Durmanov [ Понедельник, 27 Апрель, 2020 14:45 ] |
Заголовок сообщения: | Re: Как работает явное преобразование целочисленных типов? |
Должно быть 255. Так что 1) это баг, 2) всё верно. У type guard форма записи ( e )T |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |