2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6  След.
 
 Re: О константах и перилах
Сообщение25.12.2018, 10:48 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Sender в сообщении #1363582 писал(а):
Из тела программы вы не сможете обратиться к ним как к обычным константам.

Поясните, пожалуйста.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 12:57 


05/09/12
2587
FomaNeverov в сообщении #1363328 писал(а):
Независимо от языка

не получится. Так как сейчас языков, в которых отсутствуют переменные, становится все больше, и они все ширше внедряются в различные области народного хозяйства.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 13:22 
Заслуженный участник


02/08/11
6874
.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 13:38 


14/01/11
2916
Munin в сообщении #1363587 писал(а):
Поясните, пожалуйста.

Ну вот, к примеру, объявляете вы переменную в коде таким образом:
Используется синтаксис C
int i=1;

При старте программы переменной "i" присваивается значение "1". Полагаю, в большинстве случаев этим занимается операционная система, под управлением которой запускается данная программа. В случае же отсутствия таковой сама программа должна содержать небольшой загрузчик, выполняющий эту функцию. Разумеется, детали реализации непосредственно зависят от архитектуры используемого процессора. В любом случае происходит отображение области инициализированных данных, содержащихся в бинарном образе программы, хранящемся на информационном носителе, в область оперативной памяти, отведённую данной программе под инициализированные переменные. Во встраиваемых системах, где зачастую вся доступная память, в том числе и долговременная, организована в виде единого адресного пространства, используются понятия загрузочного адреса, откуда берутся данные для инициализации, и исполнительного адреса в оперативной памяти, куда они кладутся на этапе инициализации (об этом можно почитать, например, здесь http://www.keil.com/support/man/docs/armlink/armlink_pge1362065902090.htm. Вот здесь можно посмотреть на описание скриптов линковщика, в частности, позволяющих управлять размещением секций:
https://www.math.utah.edu/docs/info/ld_toc.html#SEC4). После запуска программы никто не мешает изменить значение переменной i с единицы на любое другое, и вы не сможете доступиться к единичке (которая, разумеется, никуда не делась из бинарного образа программы, хранящегося в долговременной памяти) по той причине, что её может попросту не быть в памяти процесса.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 14:45 
Заслуженный участник
Аватара пользователя


16/07/14
8355
Цюрих
Sender в сообщении #1363619 писал(а):
При старте программы переменной "i" присваивается значение "1".
Смотря где эта строчка. Если i глобальная (или была бы статической) - она будет храниться в data сегменте, и инициализируется операционной системой.
Если i локальная, то она будет храниться на стеке и, естественно, инициализировать ее будет пользовательский код в момент прохождения через это объявление.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 14:58 


14/01/11
2916
Да, это важная оговорка. Подразумевалась глобальная, конечно.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 15:08 
Аватара пользователя


11/12/16
13195
уездный город Н
Sender в сообщении #1363582 писал(а):
Это смотря какой смысл вы вкладываете в это слово.

Обычный смысл: данные, которые при выполнении программы не изменяются.

Sender в сообщении #1363582 писал(а):
Из тела программы вы не сможете обратиться к ним как к обычным константам.

Ну и что? От этого константа не перестала быть константой.

Вопрос для уточнения, в Вашем примере в сообщении выше:
Используется синтаксис C
int i=1;

Что стоит справа от символа "="?

(Оффтоп)

На мой взгляд, самая обычная константа, заданная литералом

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 15:33 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Sender
Вы написали кучу technical stuff, который я и так знаю. Про инициализированные переменные. И даже с ошибками, которые вам mihaild поправил.

Но про константы вы не написали ни слова. То есть, не ответили на мой вопрос. Жду ответа, поясните вашу первоначальную фразу.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 15:38 


14/01/11
2916
Munin, прошу прощения, в таком случае раскройте ваш вопрос подробнее. Боюсь, мне он непонятен в его текущей формулировке.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 15:49 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Что непонятного? Я прошу пояснить фразу
    Sender в сообщении #1363582 писал(а):
    Из тела программы вы не сможете обратиться к ним как к обычным константам.
Что значит "как к обычным константам", в чём отличие? Что вы подразумеваете под "обычными константами"?
Почему не смогу обратиться? Как к переменным-то могу, не вижу никаких проблем.
Какую роль играет уточнение "из тела программы"?

Если я вспоминаю константы, например, C++, то от вашего сообщения впадаю в ступор. Хочу, чтобы вы разъяснили мне досель неведомые аспекты языка, линковки и времени исполнения.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 15:52 
Заслуженный участник


20/08/14
11067
Россия, Москва
А ещё бывают и такие "константы", как строка в операторе printf("Value=%d\n", 7) - вроде и константа, но без слова const, и к которой никак не обратиться (вне printf). :-)

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 15:54 
Аватара пользователя


11/12/16
13195
уездный город Н
Извините, что влезаю.
Munin в сообщении #1363652 писал(а):
Как к переменным-то могу, не вижу никаких проблем.

Один из способов задания констант - это константы, заданные литералом.
И к ним Вы действительно не можете обратиться, как к переменным, и получить их значение.

-- 25.12.2018, 15:56 --

Dmitriy40 в сообщении #1363655 писал(а):
А ещё бывают и такие "константы", как строка в операторе printf("Value=%d\n", 7) - вроде и константа, но без слова const, и к которой никак не обратиться (вне printf).

ИМХО, зря слово константы в кавычках.
Второй операнд printf - тоже константа, кстати.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 15:58 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Dmitriy40
Вот это как раз называется "литерал", а не "константа".

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 15:58 
Заслуженный участник


20/08/14
11067
Россия, Москва
EUgeneUS в сообщении #1363657 писал(а):
ИМХО, зря слово константы в кавычках.
Исключительно чтобы не ввязываться в определение что такое константы. Да и то вон не получилось.

Munin
Насколько я помню теорию, литерал представляет собой подмножество (один из видов) константного выражения, для краткости именуемого константой.

 Профиль  
                  
 
 Re: О константах и перилах
Сообщение25.12.2018, 16:02 
Аватара пользователя


11/12/16
13195
уездный город Н
Munin в сообщении #1363660 писал(а):
Вот это как раз называется "литерал", а не "константа".

Одно в другое включается

Цитата:
Литералы представляют собой константы, включаемые непосредственно в текст программы


(Оффтоп)

Dmitriy40 в сообщении #1363661 писал(а):
Исключительно чтобы не ввязываться в определение что такое константы.

Видимо, придется. Даже не знаю, :D или :-(


-- 25.12.2018, 16:05 --

Цитата:
Literals or constants are the values we write in a conventional form whose value is obvious. In contrast to variables, literals (123, 4.3, "hi") do not change in value. These are also called explicit constants or manifest constants. I have also seen these called pure constants, but I am not sure if that terminology is agreed on.


Из статьи про историю литералов от древних веков до наших дней

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 87 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group