Раздел 3.3 - Числовые литералы

Числа, содержащиеся в исходном коде программы называют "числовыми литералами". Существует два вида числовых литералов: вещественные литералы и целые литералы. Вещественный литерал содержит точку ("."), в то время, как целый - не содержит. Примерами целых литералов могут быть ``2'', ``400'', и ``-7''; примерами вещественных литералов -``2.0'', ``400.0'', и ``3.14159''.

В числовых литералах допускается стандартная экспоненциальная форма записи (например, 1.0E9). Она допустима даже для целых литералов, но при этом порядок не должен быть отрицательным.

Для того, чтобы облегчить чтение длинных чисел, внутри числового литерала можно использовать символы подчеркивания. Например, запись "1_000_000" является корректной. В Соединенных Штатах в тех же целях используют запятые, а в Европе - точки. Символы подчеркивания не могут следовать друг за другом, а числа не могут заканчиваться символом подчеркивания. Символы подчеркивания не изменяют значения числа.

Полезным свойством Ada является возможность записи литералов в других системах счисления с основанием от 2 до 16 ( в С эта возможность менее развита). Такие литералы обычно называют литералами с основанием. Для их записи указывают основание системы счисления, затем знак "#" , затем число в данной системе, и еще один знак "#" . Например, "2#1001_1000#" является двоичным числом, равным 128+16+8 = 152.

Для полноты описания приведем BNF числовых литералов:

числовой_литерал ::= десятичный_литерал | литерал_с_основанием
десятичный_литерал ::= число [ . число ] [ порядок ]
число ::= цифра { цифра | "_" }
порядок ::= "E" [ "+" | "-" ] число
литерал_с_основанием ::= основание "#" число_по_основанию "#" [ порядок ]
основание ::= число
число_по_основанию ::= расширенная_цифра { расширенная_цифра | "_" }
расширенная_цифра ::= расширенная_цифра | "A" | "B" | "C" | "D" | "E" | "F"


Упражнение:

Даны два списка чисел:

  1. 5.5, 200_000.12, 2#1000_0100#, 8#123#
  2. 60, 12, 0x50

Какой из списков содержит только допустимые числовые литералы?

  1. Список 1.
  2. Список 2.

Вы можете также:

PREVIOUS Перейти к предыдущему разделу

NEXT     Перейти к следующему разделу

OUTLINE  Вернуться к содержанию Урока 3

David A. Wheeler (dwheeler@ida.org)

Перевод: Юрий Королев   Общая редакция перевода: Г.Ю. Сисюк

Исходная копия этого документа находится по адресу "http://www.adahome.com/Tutorials/Lovelace/s3s3.htm".

Исходная копия перевода размещена на сайте http://www.ada-ru.org