【问题标题】:In Ada how do I initialise an array constant with a repeated number?在 Ada 中,如何使用重复数字初始化数组常量?
【发布时间】:2010-03-30 00:21:19
【问题描述】:

我需要一个包含 820 个零的数组来使用数学函数。

在 C 语言中,我可以编写以下代码,编译器会填充数组:

 const float EMPTY_NUMBER_A[820] = { 0.0, };

但是在 Ada 中这是不可能的。我真的不想将 820 个元素硬编码为 0.0。有没有办法让编译器做到这一点?

 type Number_A is array (1 .. 820) of Float;
 EMPTY_NUMBER_A : constant Number_A := ???;

使用 Ada 95 和 GNAT。

【问题讨论】:

  • 你确定C真的有这样的特性吗?如果您希望使用 0.0 双精度值初始化该数组,则将整个内存区域初始化为所有零字节的系统将看起来像一个 0.0 双精度数组。如果使用{ 3.0, } 初始化数组,该功能真的有效吗?

标签: arrays constants ada


【解决方案1】:

使用aggregate

Empty_Number_A : constant Number_A := (others => 0.0);

【讨论】:

  • 比我的 41 行每行 20 个零要简洁得多。
  • 顺便说一句,这是非常强大的。如果要将除元素 20 之外的所有内容都设置为 0,则可以执行 (20 => 17.5, others => 0.0)
  • 另外,你可以说(others => Ada.Numerics.Float_Random.Random (Gen)) 来填充随机浮点数。当然,您必须首先设置生成器Gen
  • 1 票赞成。这是促使我从 C 切换到 Ada 的 Ada 语言的功能。
猜你喜欢
  • 2018-10-25
  • 2018-03-01
  • 2014-09-23
  • 2022-08-11
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 2011-11-18
  • 2012-12-08
相关资源
最近更新 更多