Я хотел бы узнать, объявлена ли переменная как изменчивая константа, может ли она быть изменена с использованием i/o или любых периферийных устройств? например: volatile const int input = 0; Также такая переменная может храниться там, где в памяти?Как представляется постоянная?
ответ
Это просто до компилятора, с учетом любых ограничений, которые вводит соответствующий стандарт. Учитывая, что вы можете принять адрес константы и назначить ее указателю, вы можете предположить, что константа занимает память в этом экземпляре.
Но это на самом деле не означает, что константы хранятся в памяти. Компилятор мог бы полностью их оптимизировать, если при этом не было никаких побочных эффектов. Альтернативно, const char* foobar = "foobar"
и const char* bar = "bar"
могут даже не занимать непересекающиеся местоположения: попытка изменить либо (формально неопределенное поведение) была бы катастрофической. Использование volatile
действительно подавляет некоторые оптимизации, но точное поведение по-прежнему зависит от компилятора.
Когда переменная определена как const
, система принимает ее как переменную только для чтения. Переменная, значение которой не должно изменяться. Однако, определяя переменную как volatile
, программист просит компилятор избежать оптимизации компилятора.
Давайте рассмотрим пример: volatile const int flag = 0;
Это говорит flag
переменная, значение которой не должно быть изменено и попросить компилятор, чтобы избежать оптимизации компилятора, значение, что указывает на компилятор, что значение флага может быть изменен во время работы другим системным процессом.
Очень хорошим примером является регистр PSW или CPSR (статус состояния программы) в процессоре. Он доступен только для чтения пользователю (пример const
) и может быть изменен только системой, если система выполняет арифметическую или логическую операцию (пример volatile
).
Надеюсь, это поможет.
+1 да это делает. «предлагая компилятору, что значение флага может быть изменено во время работы каким-то другим системным процессом», особенно хорошо. – Bathsheba
@AhmedNour Пожалуйста, отредактируйте свой вопрос и будьте более конкретным и добавьте детали, чтобы сузить набор ответов, чтобы можно было дать лучший ответ. Не так хорошо задавать такой широкий вопрос, когда у вас будет много хороших ответов и ответов, которые могут отклоняться от фактического требования. ** Просто предложение, поскольку вы новичок в SO. ** – iqstatic
- 1. SharedObject, как представляется, кэширование
- 2. Непоследовательная постоянная постоянная TCP
- 3. Постоянная постоянная переменная JSF
- 4. Маркировка файла конфигурации как «Постоянная»
- 5. Math.Round(), как представляется, не соответствует
- 6. Как представляется файл на диске
- 7. Фоновый процесс, как представляется, висит
- 8. Django, как представляется, кэширование datetime.now()
- 9. Как определяется постоянная доступность?
- 10. как тетср() постоянная
- 11. форма представляется щелкать изображение
- 12. выхода представляется несколько раз
- 13. проверки не представляется возможным
- 14. Поток сжатия представляется пустым
- 15. Правило трансформации представляется неправильным
- 16. Форма JQuery представляется дважды
- 17. Постоянная постоянная базы данных Camunda h2
- 18. Постоянная ссылка
- 19. Постоянная подписка
- 20. Постоянная ссылка
- 21. Постоянная ссылка как класс члена
- 22. Как работает постоянная ссылка stackoverflow?
- 23. PHP Постоянная ссылка .. как изменить?
- 24. Qt Sqlite столбец таблицы, как представляется, пропадут
- 25. Scala, как представляется, не запускать тесты
- 26. app.use ("*"), как представляется, вызывая функцию несколько раз
- 27. Использования angular.element, содержащая директиву, как представляется, игнорировать
- 28. Crashlytics: все методы, как представляется, устарели?
- 29. Как представляется атрибут arrays с нокаутом
- 30. как DeepCopy, когда травление не представляется возможным
Ваш вопрос непонятен. –
@pranitkothari Нет, это просто слишком широко. –