gpt4 book ai didi

Ada动态数组分配索引范围

转载 作者:行者123 更新时间:2023-12-02 09:32:43 26 4
gpt4 key购买 nike

我如何更改此代码以强制索引从第一个索引“首先评估为 1”和最后一个索引“最后评估为“长度”开始?

  Menu_Text_Ptr := new Packed_Message_Array_Type'("A...",
"B...",
"C...",
"D...");

我有几个像这样的动态数组,它们的长度各不相同。我宁愿不明确显示最后一个索引值的长度,因为这会使代码维护变得更加复杂。我宁愿只是从分配语句中添加或减去内容,然后让编译器计算出来。

就目前情况而言,第一个索引“First”的计算结果为 -2147483648(可能类似于 0x80000000)。

可以按照我的要求做吗?

这是 GNAT 上的 Ada83。

最佳答案

如果您的第一个索引是 -2147483648 (-231),那么您可能已将数组类型 Packed_Message_Array_Type 定义为如下所示:

type Packed_Message_Array_Type is array(Integer range <>) of Some_Type;

如果将索引类型从 Integer 更改为 Positive(它是 Integer 的子类型,下限为 1),则默认下限为 1

一般来说,如果定义一个数组变量并指定其初始值,但未指定下界,则下界将默认为索引类型的下界。

(我删除了这个答案的一部分;我认为您可以仅为第一个元素定义索引,但位置关联不能遵循命名关联。)

关于Ada动态数组分配索引范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com