Ada 数字文字和下划线

问题描述 投票:0回答:1

这来自在线 Ada 参考手册: http://www.adaic.org/resources/add_content/standards/05rm/RM.pdf(第 2.3 节)

decimal_literal 是传统十进制中的 numeric_literal 记数法(即基数为 10)。语法 小数_文字 ::= 数字 [.数字] [指数] 数字 ::= 数字 {[下划线] 数字} 指数 ::= E [+] 数字 | E – 数字 ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 安 整数文字的指数不得有负号。静止的 语义学 numeric_literal 中的下划线字符不会影响其含义。 指数的字母 E 可以写成小写 大小写或大写,意思相同。

如果我这样做

my_literal ::= 123_456;

下划线(下划线)是什么意思? 它说不影响意思。那它是干什么用的呢?我确信有一个简单的答案,但阅读和重新阅读这篇文章对我没有帮助。

ada literals
1个回答
7
投票

这与货币或[其他大]数字中的逗号 (,) 的原因相同:分组。 因此:

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 和位与

or
and
xor
一起使用来进行位操作。上面的方法可能看起来比简单定义大量常量并直接操作它们要多一些工作,但它更灵活,因为您可以稍后将其更改为函数而不必更改任何客户端代码,这可以如果该函数的结果是参数化整数,则进一步有用,其中 bit 具有定义
1..PARAMETER'Size

© www.soinside.com 2019 - 2024. All rights reserved.