5

これは、オンラインの 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;

アンダースコア (下線) とはどういう意味ですか? 意味 に 影響 は な い と い う。では、それは何のためですか?簡単な答えがあると確信していますが、パッセージを読んで再読しても役に立ちませんでした。

4

1 に答える 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ビット操作を行う可能性があります。上記の方法は、多くの定数を定義して直接操作するよりも少し手間がかかるように思われるかもしれませんが、後で関数に変更でき、クライアントコードを変更する必要がないという点で柔軟性があります。さらに、その関数の結果がパラメーター化された整数である場合に役立ちます。ここで、ビットには定義があります。andxor1..PARAMETER'Size

于 2013-03-07T05:21:59.687 に答える