- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在自学 Ada 编程语言,在我使用的教科书中有一个
练习打印出用户输入的数字的阶乘值。我的程序编译并运行良好,我确实得到了预期的输出,但是如果我输入值 13,程序会崩溃并引发错误。
我不知道为什么数字 13 会这样做。 IDE 是否有错误(我使用 GNAT Studio)并且我目前使用的是 Ada 2012 标准。这是我的代码:
with Ada.Text_IO;
use Ada.Text_IO;
with Ada.Integer_Text_IO;
use Ada.Integer_Text_IO;
-- procedure main - begins the program
procedure main is
counter : Integer := 1;
number : Integer := 0;
factorial : Integer := 1;
begin
New_Line;
while counter <= 5 loop
Put("Enter an integer: ");
Get(number);
for Count in 1 .. number loop
factorial := factorial * Count;
end loop;
Put_Line("Factorial value is: " & integer'image(factorial));
factorial := 1;
counter := counter + 1;
end loop;
New_Line;
end main; -- end procedure main
错误消息是这样的:引发 CONSTRAINT_ERROR : main.adb:35 溢出检查失败
最佳答案
12 的因数是 479,001,600。乘以 13 得到 13 的阶乘,该值为 6,227,020,800,大于 32 位二进制数。
所以 Constraint_Error 告诉你类型 Integer 不能代表 13 的阶乘——计算溢出。如果要计算更大的阶乘,则必须使用“更宽”的整数类型。请注意,Integer 的宽度是特定于编译器的,但保证至少为 16 位。其他一些编译器可能使用 64 位整数。 Ada 的一般建议是根据您的需要定义您自己的整数类型(类型 XX 是范围 0 .. 83838 或其他)。
否则,从 Ada 的角度来看,您的程序看起来还不错。
关于ada - 计算阶乘数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67044964/
我正在使用 iPhone 6 Plus,并使用以下方法获取 UIView 的边界: let viewBounds = view.bounds // GIVES 736 x 414 (Points),
我正在尝试在 R 的 Quantstrat 包中运行回测策略。该工具是小麦 future ,以美分报价。合约规模为 5000 蒲式耳。因此,我添加了以下代码。 future(symbols,
我正在尝试在 R 的 Quantstrat 包中运行回测策略。该工具是小麦 future ,以美分报价。合约规模为 5000 蒲式耳。因此,我添加了以下代码。 future(symbols,
我是 JavaScript 新手。我想在 Javascript 中使用 prompt() 制作一个乘法器来获取数字 n,这是我们的乘法器,我想将从 1 到 n 的所有数字与 n 数字相乘。示例: 如果
TLDR:我正在寻找一种算法,它可以在知道以下情况的情况下返回可变数字数组的最小可能的最不常见乘数: 其中一个数字 我的数组的大小 数字可能的最小值和最大值 我正在使用音乐应用程序并遇到算法问题:当混
如何为 gluCylinder() 和 gluDisk() 等函数设置纹理坐标偏移和乘数? 因此,如果正常情况下纹理会从点 0 开始,我想将其设置为从点 0.6 或 3.2 等开始。乘数意味着纹理会变
我尝试向后移动文件中的位置,但仅当我移动 512 字节时它才有效,为什么? _file = CreateFile(path, GENERIC_WRITE | GE
我正在尝试以编程方式在 swift 中为乘数设置约束,当我设置值时,它只会给我错误,“无法分配给该表达式的结果”... 我用 IBOutlet 声明了 NSLayoutConstraint,然后设置乘
我是一名优秀的程序员,十分优秀!