我正在学习learn.adacore.com教程,遇到了一个问题,不确定该怎么解决。
具体来说,我知道Ada旨在捕获试图使变量溢出指定范围定义的尝试。
在下面的例子中,第一次尝试这样做会导致编译器出现“范围检查失败”的错误,这是预期的。然而,接下来的那行代码没有捕获它,我不确定原因:
with Ada.Text_IO; use Ada.Text_IO;
procedure Custom_Floating_Types is
type T_Norm is new float range -1.0 .. 1.0;
D : T_Norm := 1.0;
begin
Put_Line("The value of D =" & T_Norm'Image(D));
-- D := D + 1.0; -- This causes a range check failure at run time = completely expected.
Put_Line("The value of D =" & T_Norm'Image(D + 1.0)); -- This doesn't?
end Custom_Floating_Types;