小编hyp*_*use的帖子

为什么 Ada 没有捕获这个指定的范围检查?

我正在阅读 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;
Run Code Online (Sandbox Code Playgroud)

ada

11
推荐指数
2
解决办法
1007
查看次数

标签 统计

ada ×1