|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Числа Для большей эффективности, PowerBASIC хранит и обрабатывает данные в различных форматах. Он поддерживает 11 уникальных числовых типов, 3 строковых типа, а также указатели. Следующая таблица объединяет важнейшие особенности и различия этих типов данных. Характеристики числовых типов
Спецификаторы типов переменных и ключевые слова
Константы и литералы Программы на PowerBASIC'е поддерживают два различных класса данных: переменные и константы. Переменная может изменять свое значение во время работы программы. Значение же константы фиксируется во время компиляции и не может изменяться во время выполнения программы (следовательно, оно остается постоянным). PowerBASIC поддерживает четыре типа констант: строковые литералы, числовые литералы, строковые приравнивания и числовые приравнивания. Строковые литералы Строковой литерал — это, проще говоря, группа символов, заключенная в двойные кавычки. Например: "Это - строка" Строковой литерал может включать символ "двойные кавычки" при его удвоении в строке. Например: A$ = "Это - ""строка""" Числовые литералы Числовые литералы представляют числовые значения. Они состоят главным образом из цифр от 0 до 9 и десятичной точки. Отрицательные значения предваряются знаком "минус" (-); знак "плюс" (+) для положительных значений необязателен. Степень назначаемой вами точности определяется внутренним представлением (целое, длинное целое, квадра-целое, байт, слово, двойное слово, простой точности, двойной точности, расширенной точности и денежное), которое PowerBASIC будет использовать при обработке значения литерала. Вы также можете принудительно сохранять значение литерала с заданной точностью, поставив после константы один из спецификаторов типа переменной (%, &, &&, ?, ??, ???, !, #, ##, @, @@). Эта возможность бывает очень полезна при работе с значениями типа "денежное" и другими числами с плавающей точкой. Например, оператор eVar##=1.1 помещает представление с простой точностью числа 1.1 (которое равно 1.10000002384185791) в переменную расширенной точности eVar##. Чтобы сохранить точное значение 1.1 в eVar##, вы должны вслед за числом 1.1 поставить спецификатор типа расширенной точности (##). Например: DIM x1 AS EXT, x2 AS EXT Если за числовой константой не следует спецификатор типа, то используются следующие правила по определению точности, в которой будет сохранено значение:
Например: 345.1
' Константа простой точности Когда знак целой константы неочевиден (нет спецификатора типа), PowerBASIC использует следующие правила для определения, сохранять значение знаковым или беззаковым:
Вот несколько примеров к этим правилам: 32767??
' Слово (беззаковое) Эта последовательность событий позволяет PowerBASIC делать интеллектуальное решение о константах в вашей программе. Вместо того, чтобы произвольно делать все неоднозначные константы знаковыми (или беззнаковыми), он пробует определить, какой тип константы вы намеревались использовать. Вы не обязательно должны принимать решение о размере целой константы, а только должно ли оно быть знаковым или беззнаковым. Все, что вы должны сделать, чтобы гарантировать, что константа будет рассматриваться как значение без знака — это должны разместить ведущий ноль в числе. Вы не должны рассматривать, является ли число байтом, словом, или двойным словом (пока вы не превышаете наибольшее значение двойного слова). Целые константы в других числовых системах Иногда удобнее выражать целые числа в числовых системах (основаниях), отличных от десятичной (где основание 10). Это особенно верно, когда выражаемая информация бинарна по сути, например, машинные адреса. PowerBASIC разрешает вам представлять данные в шестнадцатиричной (основание 16), восьмеричной (основание 8) и бинарной (основание 2) нотациях. Шестнадцатиричные константы содержат до 16 символов, где каждый символ — шестнадцатиричная цифра от 0 до F, и должна предваряться &H. Дополнительный (ведущий) нуль может быть добавлен для принудительного распознавания числа беззнаковым (либо добавлением подходящего спецификатора типа). Следующие варианты эквивалентны для определения беззнакового шестнадцатиричного значения в пределах двойного слова: A??? = &H0FFFFFFFF Восьмеричные константы могут содержать только символы от 0 до 7, должны быть до 22 символов длиной и предваряться сочетаниями &O, &Q или просто &. B = &Q7777 Бинарные константы содежат только нули и единицы, могут быть до 64 знаков длиной и должны предваряться &B. Каждая из следующих констант представляет целое число 256 (десятичное): 256 ~ &H100 ~ &O400 ~ &Q400 ~ &400 ~ &B100000000 Как и десятичные константы, шестнадцатиричные, восьмеричные и бинарные константы могут иметь спецификатор типа. Вы можете использовать спецификаторы типа ?, ??, ???, %, &, && (байт, слово, двойное слово, целое, длинное целое, квадра-целое) с константами при любом числовом основании. Если вы не хотите использовать спецификатор типа с этими константами, компилятор будет выбирать наименьший целый тип, который сможет содержать число. Вы можете использовать функцию VAL для преобразования строк в числовые значения. Такие строки могут содержать десятичные, шестнадцатиричные, бинарные и восьмеричные числа в строковой формат. Смотрите описание функции VAL для большей информации. Перевод официальной документации |