任何人都可以请告诉我下面显示的以下声明的用法。我是ada语言的初学者。我曾尝试过互联网,但那不够清楚。在ada中使用mod运算符
type Unsigned_4 is mod 2 ** 4;
for Unsigned_4'Size use 4;
任何人都可以请告诉我下面显示的以下声明的用法。我是ada语言的初学者。我曾尝试过互联网,但那不够清楚。在ada中使用mod运算符
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的说法,这是一个modular type。模块化类型的工作方式有点类似于C:unsigned
类型:它们没有负值,一旦达到最大可表示值,正常(非模块化)整数在阿达,你会得到constraint_error