gpt4 book ai didi

arrays - bool 数组使人作怪

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

我继承了这段代码,无法弄清楚它的作用。该定义看起来很简单:

result : BOOLEAN ;
LOOKUP_TABLE : array
( BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN,
BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN, BOOLEAN ) of
BOOLEAN := (others => (others => (others => (others => (others => (others => (others => (others =>
(others => (others => (others => (others => (others => (others => (others => (others =>
TRUE ))))))))))))))));

在体内,它的用法如下:
result := LOOKUP_TABLE(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE,
FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE );

在GDB中转储lookup_table时,它会创建一行超过500,000个字符的行,第一行看起来像这样:
$1 = ((((((((((((((((true, true), (true, true)), ((true, true), (true, true))), (((true, true), (true, ...

本来我的问题是:如何将16 bool 数组简化为单个 bool 值“结果”?但是在GDB中查看它之后,我不得不问“这是什么???”

PS:正文中的调用之后,LOOKUP_TABLE仍为500,000个字符,其中每个 bool 字段为TRUE ...

最佳答案

在Ada中,数组不必由从0开始的int索引。
在这种情况下,您具有使用 bool 值作为索引的多维数组。

初始化数组时,必须指定数组的整个范围。

一维数组如下所示:
Lookup_Table : array(Boolean) of Boolean := (False..True => True);
当处理较大的数组时,指定所有替代项很不方便,因此指定了关键字others
这意味着尚未指定所有替代方案,因此与上述相同:
Lookup_Table : array(Boolean) of Boolean := (others => True);
现在,该数组如下所示(1是维,C是内容):

   1  |  C
-----|-----
False|True
True |True

在二维数组中,这将是:
Lookup_Table : array(Boolean, Boolean) of Boolean := (others => (others => True));
   1  |  2  |  C
-----|-----|-----
False|False|True
False|True |True
True |False|True
True |True |True

您的情况是16个尺寸。

您可以阅读有关Ada数组 here的更多信息

关于arrays - bool 数组使人作怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793897/

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