MaxLongInt — Константа
В Delphi существует следующие виды констант:
- неименованные
- именованные
- нетипизированные
- типизированные
- зарезервированные
Неименованные константы (как следует из названия) не имеют имен, и потому их не нужно описывать. Тип неименованной константы определяется компилятором автоматически:
- любая последовательность цифр (возможно, предваряемая знаком «-» или «+» или разбиваемая одной точкой) воспринимается компилятором как число (целое или вещественное);
- любая последовательность символов, заключенная в апострофы, воспринимается как строка;
- любая последовательность целых чисел либо символов через запятую, обрамленная квадратными скобками, воспринимается как множество.
Пример использования неименованных констант:
Нетипизированная константа – константа, тип которой не указан при ее объявлении. Для такой константы компилятор сам (исходя из ее значения) определит, к какому базовому типу ее отнести. Любую уже описанную константу можно использовать при объявлении других констант, переменных и типов данных. Вот несколько простых примеров:
Типизированные константы – наиболее интересный вид констант. Они объявляются с явным указанием типа, и, по сути, представляют собой переменные с начальным значением. Из этого следует, во-первых, что типизированные константы нельзя использовать для определения других констант, типов данных и переменных, а во-вторых, их значения можно изменять в процессе работы программы.
Примеры типизированных констант:
Константы нельзя инициализировать списком, следующий код не будет скомпилирован:
Типизированная константа, как и переменная, приобретает указанное в ее объявлении значение (инициируется) лишь один раз: к моменту начала работы (под)программы. Разница между переменной и константой в том, что инициализировать при объявлении можно только глобальные переменные (объявленные в интерфейсной или исполняемой частях модулей, вне процедуры или функции), в то время как типизированные константы таких ограничений не имеют. Более того, при повторном входе в блок (процедуру или функцию), в котором объявлена типизированная константа, повторная инициализация не производится, и она сохраняет то значение, которое имела к моменту выхода из блока. Таким образом, типизированная константа, объявленная внутри процедуры или функции, может быть использована в качестве переменной так называемого долговременного хранения, так как она сохраняет свое значение (в пределах своего блока кода) до завершения работы приложения.
В следующим примере демонстрируется как функция подсчитывает сколько раз она вызывалась:
Хорошим примером использования локальных типизированных констант может являться функция, генерирующая последовательности чисел, создавая новое число основываясь на старом.
Типизированные константы могут быть любого типа, кроме вариантов, файлов, объектов и классов. Нельзя также объявить типизированную константу-запись, если хотя бы одно из ее полей является полем файлового типа, вариантом, объектом или классом. Типизированную константу нельзя использовать в качестве значения при объявлении других констант или границ типа-диапазона.
Возможностью изменения значения типизированной константы можно управлять с помощью настроек проекта: Project – Options… – Delphi Compiler – Compiling – Syntax options – Assignable typed constants. Кроме того эту опцию дублирует директива компилятора <$WRITEABLECONST ON>(или ее более краткий аналог <$J+>). По умолчанию эта возможность отключена – <$J->.
Пример изменения значения типизированной константы в runtime:
Есть и другой способ изменения значения типизированной константы в runtime, без применения директив условной компиляции. В этом способе результат достигается путем нехитрой манипуляции с указателями.
Типизированные константы обладают еще одним интересным свойством – будучи объявленной членом класса она будет общей для всех объектов этого класса (в отличие от переменной, значение которой будет “своим” для каждого объекта.
И, наконец, зарезервированные константы, которые уже определены в Delphi и могут быть использованы без объявления. Их совсем немного:
- True (тип Boolean);
- False (тип Boolean);
- MaxInt (тип Integer);
- MaxLongint (тип Integer).
Использование этих констант может таить в себе опасность, если вы работаете с чужим кодом. Связано это с тем, что эти константы можно переопределить. Помните старый прикол?
Так вот, тоже самое можно сделать и в Delphi.
Будьте бдительны! Удачи в программировании!
MaxLongInt — Константа
Как программно определить максимальное/мин. значение переменной?
var
peremennaja,
maxznach, minznach: interer;
.
randomize;
maxznach := 0; minznach := 0;
while true do
begin
peremennaja := random(1000000);
if peremennaja maxznach then maxznach := peremennaja;
end;
.
MaxComp constant The maximum value of the Comp data type.
MaxDouble constant The maximum value of the Double data type.
MaxExtended constantThe maximum value of the Extended data type.
MaxInt constant The maximum value of the Integer data type.
MaxLongint constant The maximum value of the Longint data type.
MaxSingle constant The maximum value of the Single data type.
MinComp constant The minimum value of the Comp data type.
MinDouble constant The minimum value of the Double data type.
MinExtended constant The minimum value of the Extended data type.
MinSingle constant The minimum value of the Single data type.
> [2] Elen © (17.11.06 13:24)
ну вот, только что хотел подобным ответить.
Вооон вы про что. Пора на пенсию.
> Вооон вы про что. Пора на пенсию.
Лучше к нам — в клуб профессиональных телепаторов
> Новый_Юзер (17.11.06 13:18)
> Как программно определить максимальное/мин. значение переменной?
а аппаратно?
имелось ввиду максимальное значение которое может принять переменная.
для юмористов уточню: речь идёт о числах
> Лучше к нам — в клуб профессиональных телепаторов
Не, мой телепатор с гарантийного обслуживания сняли, ломался слишком часто, теперь стараюсь по-реже использовать
> Плохиш
А мы новый выдадим Аглицкий с апгрейдом каждую неделю
> Новый_Юзер (17.11.06 13:40) [7]
>
> имелось ввиду максимальное значение которое может принять
> переменная.
> для юмористов уточню: речь идёт о числах
Читай, шутник, [2]
const < Ranges of the IEEE floating point types, including denormals >
MinSingle = 1.5e-45;
MaxSingle = 3.4e+38;
MinDouble = 5.0e-324;
MaxDouble = 1.7e+308;
MinExtended = 3.4e-4932;
MaxExtended = 1.1e+4932;
MinComp = -9.223372036854775807e+18;
MaxComp = 9.223372036854775807e+18;
< The following constants should not be used for comparison, only
assignments. For comparison please use the IsNan and IsInfinity functions
provided below. >
NaN = 0.0 / 0.0;
(*$EXTERNALSYM NaN*)
(*$HPPEMIT «static const Extended NaN = 0.0 / 0.0;»*)
Infinity = 1.0 / 0.0;
(*$EXTERNALSYM Infinity*)
(*$HPPEMIT «static const Extended Infinity = 1.0 / 0.0;»*)
NegInfinity = -1.0 / 0.0;
(*$EXTERNALSYM NegInfinity*)
(*$HPPEMIT «static const Extended NegInfinity = -1.0 / 0.0;»*)
Рано отправил:
Low, High — для порядковых типов
Думкин © (17.11.06 13:59) [10]
А вот хлобысть и она у него как byte объявлена, а перень вознадеется на
MinComp = -9.223372036854775807e+18;
MaxComp = 9.223372036854775807e+18;
> Андрей Сенченко © (17.11.06 14:02) [13]
Врачи консультируют в другом месте.
> Андрей Сенченко © (17.11.06 14:02) [13]
Тогда он придёт сюда с претензиями, вот тут-то мы на нём и оторвёмся (кравожадно потирая руки. )
> Новый_Юзер (17.11.2006 13:40:07) [7]
> для юмористов уточню: речь идёт о числах
Вот теперь шутки кончились, High, Low но числа тоже разные бывают, если не уточнишь, то шутки начнутся снова.
> MBo (17.11.2006 14:01:12) [12]
Не рано, пока речь идет о каких то абстрактных числах, будут конкретные, то и ответ будет конкретным.
> Новый_Юзер (17.11.06 13:40) [7]
> имелось ввиду максимальное значение которое может принять
> переменная.
> для юмористов уточню: речь идёт о числах
В любой литературе по типам переменных указано и минимальное и максимальное.
P.S. «Минимальное и максимальное значение строковой переменной». да уж, действительно — Новый Юзер!
Вообще,речь шла о числах.
А для какого языка тебе надо определять параметры?А то вдруг ты с Бейсиком.
Пределы целых чисел Integer Limits
Блок, относящийся только к системам Microsoft Microsoft Specific
Ограничения для целочисленных типов представлены в следующей таблице. The limits for integer types are listed in the following table. Эти ограничения также заданы в стандартном файле заголовка
Ограничения для целочисленных констант Limits on Integer Constants
Константа Constant | Значение Meaning | Значение Value |
---|---|---|
CHAR_BIT CHAR_BIT | Количество битов в наименьшей переменной, которая не является битовым полем. Number of bits in the smallest variable that is not a bit field. | 8 8 |
SCHAR_MIN SCHAR_MIN | Минимальное значение для переменной типа signed char. Minimum value for a variable of type signed char. | –128 -128 |
SCHAR_MAX SCHAR_MAX | Максимальное значение для переменной типа signed char. Maximum value for a variable of type signed char. | 127 127 |
UCHAR_MAX UCHAR_MAX | Максимальное значение для переменной типа unsigned char. Maximum value for a variable of type unsigned char. | 255 (0xff) 255 (0xff) |
CHAR_MIN CHAR_MIN | Минимальное значение для переменной типа char. Minimum value for a variable of type char. | –128 (или 0, если используется параметр /J) -128; 0 if /J option used |
CHAR_MAX CHAR_MAX | Максимальное значение для переменной типа char. Maximum value for a variable of type char. | –127 (или 255, если используется параметр /J) 127; 255 if /J option used |
MB_LEN_MAX MB_LEN_MAX | Максимальное количество байтов в многосимвольной константе. Maximum number of bytes in a multicharacter constant. | 5 5 |
SHRT_MIN SHRT_MIN | Минимальное значение для переменной типа short. Minimum value for a variable of type short. | -32768 -32768 |
SHRT_MAX SHRT_MAX | Максимальное значение для переменной типа short. Maximum value for a variable of type short. | 32767 32767 |
USHRT_MAX USHRT_MAX | Максимальное значение для переменной типа unsigned short. Maximum value for a variable of type unsigned short. | 65 535 (0xffff) 65535 (0xffff) |
INT_MIN INT_MIN | Минимальное значение для переменной типа int. Minimum value for a variable of type int. | -2147483648 -2147483648 |
INT_MAX INT_MAX | Максимальное значение для переменной типа int. Maximum value for a variable of type int. | 2147483647 2147483647 |
UINT_MAX UINT_MAX | Максимальное значение для переменной типа unsigned int. Maximum value for a variable of type unsigned int. | 4 294 967 295 (0xffffffff) 4294967295 (0xffffffff) |
LONG_MIN LONG_MIN | Минимальное значение для переменной типа long. Minimum value for a variable of type long. | -2147483648 -2147483648 |
LONG_MAX LONG_MAX | Максимальное значение для переменной типа long. Maximum value for a variable of type long. | 2147483647 2147483647 |
ULONG_MAX ULONG_MAX | Максимальное значение для переменной типа unsigned long. Maximum value for a variable of type unsigned long. | 4 294 967 295 (0xffffffff) 4294967295 (0xffffffff) |
LLONG_MIN LLONG_MIN | Минимальное значение для переменной типа long long Minimum value for a variable of type long long | -9223372036854775808 -9223372036854775808 |
LLONG_MAX LLONG_MAX | Максимальное значение для переменной типа long long Maximum value for a variable of type long long | 9223372036854775807 9223372036854775807 |
ULLONG_MAX ULLONG_MAX | Максимальное значение для переменной типа long long без знака Maximum value for a variable of type unsigned long long | 18446744073709551615 (0xffffffffffffffff) 18446744073709551615 (0xffffffffffffffff) |
Если значение превышает максимально возможное представление целочисленного типа, компилятор Microsoft выдает ошибку. If a value exceeds the largest integer representation, the Microsoft compiler generates an error.
Завершение блока, относящегося только к системам Майкрософт END Microsoft Specific
Амортизированная константа
Может кто-нибудь объяснить, что означает амортизированная сложность алгоритма, в частности, амортизированная константа?
Это когда для массива операция выполняется не каждый вызов, а только один раз?
1 ответ 1
Ну вот смотрите. Берем динамическим массив. Сначала из одного элемента.
Добавляем еще один. Удваиваем массив. Итого — одно выделение, один перенос (первого элемента).
Еще добавление — массив становится равен 4 элементам. Выделений — 2. переносов — 3 (теперь переносим 2 элемента, + 1 ранее). Добавление четвертого элемента не требует ни выделения, ни переноса.
Еще добавление. Массив увеличивается до 8 элементов. Теперь в массиве 8 элементов, 3 выделения памяти, 7 переносов элементов. Элементы с 6 по 8 не требуют ни выделения, ни переноса.
Теперь у нас 2 n элементов, n выделений памяти, 2 n -1 переноса элементов.
Т.е. в среднем каждый элемент пришлось переносить 1-2 -n раз, при больших n — 1 раз.
Константа? Да. При том, что первый элемент переносился log2n раз.
А вот в среднем, т.е. амортизированно — константа.
MaxLongInt — Константа
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
|
Регистрация
Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда — alarforum@yandex.ru
|