Вверх ↑
Этот топик читают: Гость
Ответов: 1321
Рейтинг: 37
#76: 2011-05-05 13:46:48 ЛС | профиль | цитата
Мне всё ясно
карма: 0

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#77: 2011-05-05 13:49:31 ЛС | профиль | цитата
Netspirit писал(а):
Не получится для локальной переменной (так как они не инициализируются), а для глобальной - вполне.

Пример на IC в студию, где можно прописать константу с определением значения без const

------------ Дoбавленo в 13.49:
Roma писал(а):
Мне всё ясно

Ай, ай, ай, Roma, наехал на уважаемого человека, нехорошо
карма: 22

0
Ответов: 1321
Рейтинг: 37
#78: 2011-05-05 13:51:37 ЛС | профиль | цитата
nesco писал(а):
Ай, ай, ай, Roma, наехал на уважаемого человека, нехорошо

Я ненакого не наезжал
карма: 0

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#79: 2011-05-05 13:52:57 ЛС | профиль | цитата
Roma писал(а):
Я ненакого не наезжал

А это кто писал
Roma писал(а):
Tad, перед тем как советовать, изучи сам

А дело-то было совсем не в этом
карма: 22

0
Ответов: 1321
Рейтинг: 37
#80: 2011-05-05 13:58:16 ЛС | профиль | цитата
Ладно ,извини Tad
------------ Дoбавленo в 13.58:
Я просто посчитал что если там написано, то это правильно
карма: 0

0
Ответов: 4630
Рейтинг: 749
#81: 2011-05-05 14:09:26 ЛС | профиль | цитата
nesco писал(а):
Пример на IC в студию

Не знал, что глобальные переменные можно инициализировать?

карма: 26

0
файлы: 1111.sha [792B] [328]
Разработчик
Ответов: 26156
Рейтинг: 2127
#82: 2011-05-05 14:16:29 ЛС | профиль | цитата
Netspirit писал(а):
Не знал, что глобальные переменные можно инициализировать?

Мы про константы говорили, а ты привел пример глобальной переменной

var a: array[0..2] of integer = (2,5,7);


А мы разговор вели, вообще-то, вот про это

Именованные константы объявляются с помощью ключевого слова const. Это слово начинает раздел объявления констант. После него может следовать ряд объявлений констант в форме:

<идентификатор константы> = <константное выражение>;

Имеются также предопределенные константы: true - истина, false - ложь, nil - нулевой указатель.

Объявление именованной константы является указателем для компилятора заменить во всем тексте идентификатор константы его значением. Такая замена производится только в процессе компиляции и не отражается на исходном тексте.


Переменные можно разделить на локальные и глобальные. Переменные, объявляемые в процедурах и функциях, являются локальными. Они существуют только во время выполнения соответствующей процедуры или функции. Т.е. память для них выделяется только при вызове соответствующей процедуры или функции и освобождается при возврате в вызвавшую процедуру. Переменные, объявленные вне процедур или функций, являются глобальными.



Netspirit, разницу уловил
карма: 22

0
Ответов: 4630
Рейтинг: 749
#83: 2011-05-05 14:19:34 ЛС | профиль | цитата
А я думал, мы говорили про это
Tad писал(а):
1. без слова const - так НЕПОЛУЧИТСЯ.

Только Tad'у стоило бы уточнить, что НЕ ПОЛУЧИТСЯ, если в теле функции.
карма: 26

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#84: 2011-05-05 14:22:22 ЛС | профиль | цитата
Netspirit, под любую переменную всегда выделяется память в RealTime (для глобальной еще и всегда, в отличии от локальной), константа же тупо меняется компилятором на этапе компиляции на ее значение

Вот я тебя и спросил

nesco писал(а):
разницу уловил


Народ! Вы иногда мозги включайте. Сделать-то можно всякое, но вот к чему это все потом приведет...
карма: 22

0
Ответов: 4630
Рейтинг: 749
#85: 2011-05-05 14:26:24 ЛС | профиль | цитата
Я-то уловил, но имел в виду именно высказывание Tad'a.
И, кстати, с любой константой можно работать, как с переменной (через указатель), так что под них память тоже выделяется.
карма: 26

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#86: 2011-05-05 14:31:29 ЛС | профиль | цитата
Netspirit писал(а):
И, кстати, с любой константой можно работать, как с переменной (через указатель), так что под них память тоже выделяется

Да, а каже вот это
Такая замена производится только в процессе компиляции...
...
Цель объявления именованной константы - сделать текст более осмысленным и облегчить при необходимости изменение значения константы во всем тексте

Ты, случаем, с типизированными константами не попутал

Типизированные константы, несмотря на такое неудачное название и несмотря на то, что они объявляются в разделе констант const, в действительности являются не константами, а переменными, инициализируемыми при их объявлении, т.е. получающими начальное значение
...
Типизированная константа объявляется выражением:

const <идентификатор> : <тип> = <константное выражение>;

Например:

const In: integer = 7;
Angl: double = 35*Pi/180;

В дальнейшем тексте программы с типизированными константами можно обращаться как с обычными переменными, изменяя, когда требуется

карма: 22

0
Ответов: 4630
Рейтинг: 749
#87: 2011-05-05 14:37:37 ЛС | профиль | цитата
Согласен, этого не знал, но тем не менее const - оно и есть const.
карма: 26

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#88: 2011-05-05 14:43:18 ЛС | профиль | цитата
Netspirit, кстати, выдержку из учебника, где сказано про то что
Netspirit писал(а):
с любой константой можно работать, как с переменной (через указатель)

можешь привести, да и пример на IC неплохо бы в подтверждение
карма: 22

0
Ответов: 4630
Рейтинг: 749
#89: 2011-05-05 15:00:57 ЛС | профиль | цитата
Я для себя раньше не разделял константы на типизированные и нетипизированные.
Поэтому, моё "любая константа" следует рассматирвать как "типизированная".
Конечно, если константа-массив рассматривается компилятором как переменная, то по указателю
можно делать что угодно. Например:

[offtop]
Повторюсь, я опровергал мнение, что инициализированный массив обязан объявляться с помощью const
[/offtop]
карма: 26

0
файлы: 1example.sha [894B] [328]
Разработчик
Ответов: 26156
Рейтинг: 2127
#90: 2011-05-05 15:07:15 ЛС | профиль | цитата
Netspirit писал(а):
Повторюсь, я опровергал мнение, что инициализированный массив обязан объявляться с помощью const

Пожалуй, с этим я соглашусь -- любой массив, объявленный константой, будет типизированной константой и под него будет выделена память, те именованной константой он не будет никогда
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)