Я запутался. Пытаюсь найти в существущем 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
Пытался также посмотреть в сообщении об обычном Обероне, но там тоже как-то скупо.