Как записываются константы в программе

Константы — это некие данные, которые не меняются на протяжении всего времени выполнения программы.
Они нужны для удобного представления каких либо значений. Или для наглядности, например определить версию программы. В дальнейшем если захочется поменять это значение, не надо будет выискивать его по всему коду.
Константы в Pascal бывают 3 видов Константы, Зарезервированные константы, и Типизированные константы. Они объявляются в начале программы и не должны менять своего значения на протяжении всего цикла работы программы.

Обычные константы.

В основном используются обычные константы они объявляются в разделе описания констант const.
Эти константы нельзя изменить, на протяжении всего цикла программы.(Однако можно переопределить на момент выполнения функции или процедуры).
Пример:

Источник: coolcode.ru

C++ — Урок 003. Константы

Для того, чтобы функция использовалась в константном выражении, то есть, вычислялась компилятором, необходимо определить её со спецификатором constexpr .

Язык Паскаль с нуля | #11 Как использовать константы.

constexpr double square(double x)

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

const

Объекты со спецификатором const не могут быть изменены, а также должны быть инициализированы.

const int model = 90; // model является константой const int v[] = < 1, 2, 3, 4 >; // v[i] является константой const int x; // Ошибка: значение не инициализировано

Поскольку объекты со спецификаторов const не могут быть изменены, то следующий код будет ошибочным:

void f() < model = 200; // Ошибка: model является константой v[2] = 3; // Ошибка: v[i] является константой >

Обратите внимание, что const изменяет тип объекта, а не указание того, как должна быть назначена переменная. const ограничивает способы работы с объектом.

void g(const X∗ p) < // Не можем изменить p здесь >void h() < X val; // Но можем модифицировать значение здесь g( // . >

Читайте также:
Установить программу на планшет Самсунг

При использовании указателя задействуются два объекта: сам указатель и объект, на который указывает. Префиксное’ объявление указателя с const делает константным объект, а не указатель. Чтобы объявить как const сам указатель, а не объект, на который он указывает, необходимо поместить const после символа указателя. Например:

void f1(char∗ p) < char s[] = «Gorm»; const char∗ pc = s; // указатель на константу pc[3] = ‘g’; // Ошибка: значение объекта является константой pc = p; // OK char ∗const cp = s; // константный указатель cp[3] = ‘a’; // OK cp = p; // Ошибка: cp является константой const char ∗const cpc = s; // константный указатель на константный объект cpc[3] = ‘a’; // Ошибка: объект является константой cpc = p; // Ошибка: указатель является константой >

Местоположение const относительно базового типа не принципиально, поскольку не существует типа данных const*. Принципиальным является положение const относительно символа *. Поэтому возможны следующие записи:

Константы. Ключевое слово const. C++ для начинающих. Урок #6.


char ∗const cp; // const указатель на char char const∗ pc; // указать на const char const char∗ pc2; // указатель на const char

Объект, который является константой при доступе через один указатель, может быть изменяемым при доступе иными способами. Это особенно полезно для аргументов функции. Объявляя аргумент указателя как const , функции запрещается изменять объект, на который указывает. Например:

const char∗ strchr(const char∗ p, char c); char∗ strchr(char∗ p, char c);

Первая версия используется для строк, элементы которых не должны быть изменены функцией и возвращает указатель на const, который не позволяет изменять результат. Вторая версия используется для изменяемых строк.

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

void f4() < int a = 1; const int c = 2; const int∗ p1 = // OK const int∗ p2 = // OK int∗ p3 = // Ошибка: инициализация int* с const int* ∗p3 = 7; // Попытка изменить значение c >

Читайте также:
Программа определение качества видео

constexpr

Константное выражение является выражением, которое вычисляется во время компиляции. Константные выражения не могут использовать значения и переменные, которые не известны во время компиляции.

Существует множество причин, по которым кому-то может понадобиться именованная константа, а не буква или значение, хранящееся в переменной:

  1. Именованные константы упрощают понимание и поддержку кода.
  2. Переменная может быть изменена (поэтому мы должны быть более осторожными в наших рассуждениях, чем для константы).
  3. Язык требует постоянных выражений для размеров массивов, меток case и аргументов значений шаблона.
  4. Программисты встраиваемых систем любят помещать неизменяемые данные в постоянное запоминающее устройство. Потому что доступная только для чтения память дешевле, чем динамическая память (с точки зрения затрат и потребления энергии) и часто более многочисленная. Кроме того, данные в постоянной памяти защищены от большинства сбоев системы.
  5. Если инициализация выполняется во время компиляции, то в многопоточной программе системе не может быть никаких расхождений данных.
  6. Выполнение вычислений на этапе компиляции улучшает производительность программы.

Значение constexpr вычисляется во время выполнения компиляции, и если оно не может быть вычислено, то компилятор выдаст ошибку.

int x1 = 7; constexpr int x2 = 7; constexpr int x3 = x1; // Ошибка: инициализатор не является константным выражением constexpr int x4 = x2; // OK void f() < constexpr int y3 = x1; // Ошибка: инициализатор не является константным выражением constexpr int y4 = x2; // OK // . >

Возможности константных выражений достаточно велики, поскольку имеется возможность использовать целочисленнные типы данных, данные с плавающей точкой, перечисления, а также операторы, которые не изменяют значения переменных (такие как +, ? и [] , но не = или ++ )

constexpr int isqrt_helper(int sq, int d, int a) < return sq constexpr int isqrt(int x) < return isqrt_helper(1,3,x)/2 − 1; >constexpr int s1 = isqrt(9); constexpr int s2 = isqrt(1234);

Рекомендуем хостинг TIMEWEB

Рекомендуем хостинг TIMEWEB

Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Читайте также:
Что такое программа в строительстве

Рекомендуемые статьи по этой тематике

  • C++ — Урок 004. Условия и циклы
  • C++ — Урок 002. Типы данных, Переменные и Арифметика
  • C++ — Урок 001. Hello World

По статье задано0 вопрос(ов)

Подписка на обсуждение 1
Подписка на раздел 220

Вам это нравится? Поделитесь в социальных сетях!

Источник: evileg.com

Как записываются константы в программе

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

int n ; n = 9; n = 5;

Но кроме переменных в языке программирования C++ можно определять константы . Их значение устанавливается один раз и впоследствии мы его не можем изменить. Константа определяется практически так же, как и переменная за тем исключением, что в начале определения константы идет ключевое слово const . Например:

const int n ; // или // const int n = 22;

И также в процессе программы мы сможем обращаться к значению константы:

#include int main() < const int age ; std::cout

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

const int age ; age = 78;

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

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

const int age;

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

int a ; const int b ; const int d ; const int x ;

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

Источник: metanit.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru