任何人都可以告诉我以下声明的用法。我是ada语言的初学者。我曾尝试过互联网,但这还不够清楚。
type Unsigned_4 is mod 2 ** 4;
for Unsigned_4'Size use 4;
答案 0 :(得分:3)
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)中使用类型时,最小大小就会出现。
答案 1 :(得分:1)
“是mod”是Ada说这是modular type的方式。模块化类型在C中有点像unsigned
类型:它们没有负值,一旦达到最大可表示值,如果添加一个,则会得到0。
如果你在Ada中尝试使用普通(非模块化)整数,你会得到constraint_error