这来自在线Ada引用手册:
http://www.adaic.org/resources/add_content/standards/05rm/RM.pdf(第2.3节)
A decimal_literal is a numeric_literal in the conventional decimal notation (that is, the base is ten).
Syntax
decimal_literal ::= numeral [.numeral] [exponent]
**numeral ::= digit {[underline] digit}**
exponent ::= E [+] numeral | E – numeral
digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
An exponent for an integer literal shall not have a minus sign.
Static Semantics
**An underline character in a numeric_literal does not affect its meaning.** The letter E of an exponent can be
written either in lower case or in upper case, with the same meaning.
如果我做
my_literal ::= 123_456;
下划线(下划线)是什么意思? 它表示不影响的含义。那是为了什么我相信答案很简单,但阅读和重新整理文章并没有帮助我。
最佳答案
例如,使用货币或其他较大数字的逗号(,)也是相同的原因:分组。
因此:
Million : Constant:= 1_000_000;
此外,您可以将其与基本设置一起用作掩膜设置:
Type Bit is Range 1..8;
SubType Byte is Interfaces.Unsigned_8;
Type Masks is Array(Positive Range <>) of Byte;
Mask_Map : Constant Masks(Bit):=
(
2#0000_0001#,
2#0000_0010#,
2#0000_0100#,
2#0000_1000#,
2#0001_0000#,
2#0010_0000#,
2#0100_0000#,
2#1000_0000#
);
然后,也许您可以将Mask_Map和bits以及
or
,and
和xor
一起使用来进行位操作。上面的方法似乎比简单定义大量常量并直接对其进行操作要多一些,但它具有更大的灵活性,因为您以后可以将其更改为函数,而不必更改任何客户端代码,这可以如果该函数的结果是参数化的整数,则进一步有用,其中bit具有1..PARAMETER'Size
的定义。关于Ada数字文字和下划线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15263400/