谁能告诉我下面显示的以下声明的用法。我是 ada 语言的初学者。我尝试过互联网,但还不够清楚。
type Unsigned_4 is mod 2 ** 4;
for Unsigned_4'Size use 4;
谁能告诉我下面显示的以下声明的用法。我是 ada 语言的初学者。我尝试过互联网,但还不够清楚。
type Unsigned_4 is mod 2 ** 4;
for Unsigned_4'Size use 4;
Unsigned_4
是一个“模块化类型”,取值 0、1、.. 14、15 和环绕。
U : Unsigned_4;
begin
U := Unsigned_4'Last; -- 15
U := U + 1; -- 0
您只需要 4 位来实现该类型,因此可以将其指定为大小(我认为这可能只是一个确认规范,因为编译器已经清楚地知道这一点;如果您希望将其放入 3 位并说for Unsigned_4'Size use 3;
编译器会告诉你你错了)。
大多数编译器都希望将类型的值存储在至少一个字节中,以便有效访问。当您在打包记录(pragma Pack)中使用类型时,最小大小会自行产生。
“is mod”是 Ada 的说法,即这是一个模块化类型。模块化类型的工作方式有点像unsigned
C 中的类型:它们没有负值,一旦你达到最大的可表示值,如果你加一个,你会得到 0。
如果您要在 Ada 中尝试使用普通(非模)整数,您会得到constraint_error