gpt4 book ai didi

enums - Ada 枚举类型范围

转载 作者:行者123 更新时间:2023-12-04 16:32:19 25 4
gpt4 key购买 nike

据我了解,Ada 在其枚举类型上使用基于 0 的索引。所以在下面的 Status_Type 中,序数值从 0 到 5。

   type Status_Type is
(Undefined,
Available,
Fout,
Assigned,
Effected,
Cleared);

我的问题是.. 以下示例的序数值是什么?它们是从 0 开始还是从父类(super class)型的序数值开始?
   subtype Sub_Status_Type is Status_Type
range Available.. Effected;

subtype Un_Status_Type is Sub_Status_Type
range Fout .. Assigned;

Sub_Status_Type 序号值是从 1 到 4 还是从 0 到 3?

Un_Status_Type 序号值是从 3 到 4 还是从 1 到 2 或从 0 到 1?

最佳答案

对于子类型,'pos将返回与基本类型相同的值(我相信分别为 1..4 和 2..3)。子类型并不是真正的新类型和不同类型,它们是相同的旧类型,但对其可能的值有一些额外的限制。

但需要注意的是,这些值是在场景下分配的。 他们是什么对你来说真的没有区别 , 除非您使用的是 'val'pos属性,或者您正在连接在 Ada 之外编写的代码(或硬件)。

另外,如果它最终很重要,您应该知道情况实际上要复杂得多。 'pos'val不要返回编译器在生成代码时用于这些枚举值的实际位值。他们只是返回他们的“顺序位置”;它们与第一个值的偏移量。

默认情况下,它们通常是相同的。但是,您可以使用 for ... use 自己更改值分配(但不是序数位置分配)。子句,如下面的代码所示:

for Status_Type use
(Undefined => 1,
Available => 2,
Out => 4,
Assigned => 8,
Effected => 16,
Cleared => 32);

关于enums - Ada 枚举类型范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338116/

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