2013-03-07 18 views
5

Đây là từ tài liệu tham khảo thủ Ada trực tuyến: http://www.adaic.org/resources/add_content/standards/05rm/RM.pdf (phần 2,3)Ada Numeric Literals và Gạch chân

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. 

Nếu tôi làm

my_literal ::= 123_456; 

những gì hiện các dấu gạch dưới (dấu gạch dưới) nghĩa là gì? Nó nói rằng nó không ảnh hưởng đến ý nghĩa. Sau đó, nó là gì? Tôi chắc chắn có một câu trả lời đơn giản nhưng đọc và tái lại đoạn văn đã không giúp tôi.

Trả lời

7

Đó cũng là lý do tương tự, ví dụ: dấu phẩy (,) bằng đơn vị tiền tệ hoặc [số lớn khác]: nhóm. Như vậy:

Million : Constant:= 1_000_000; 

Bên cạnh đó, bạn có thể sử dụng nó kết hợp với cơ sở-thiết lập như một thiết lập cho mặt nạ:

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# 
    ); 

Sau đó, có lẽ bạn sẽ sử dụng Mask_Map và bit cùng với or , andxor để thực hiện thao tác bit. Phương thức trên có vẻ hơi hơn một chút so với định nghĩa đơn giản của rất nhiều hằng số và trực tiếp thao tác chúng, nhưng linh hoạt hơn trong đó bạn có thể thay đổi nó thành hàm và không phải thay đổi bất kỳ mã máy khách nào, tiếp tục hữu ích nếu kết quả của hàm đó là số nguyên parametrized, trong đó bit có định nghĩa 1..PARAMETER'Size.

+0

Vì vậy, nó hoàn toàn cho khả năng đọc của lập trình viên? –

+0

Có. Ada có khả năng bảo trì như một mục tiêu thiết kế. – Shark8

+0

Bạn * làm * phải biết rằng hai gạch chân liên tiếp là một lỗi. [IIRC] – Shark8