Перейти к содержимому

Значение переменной невозможно использовать как константу с

  • автор:

Значение переменной невозможно использовать как константу с

Константа, переменная — это основополагающие понятия в любом языке программирования. Дадим определения этим понятиям.

Константа — это величина, которая при выполнении программы остаётся неизменной.

Переменная — это ячейка памяти для временного хранения данных. Предполагается, что в процессе выполнения программы значения переменных могут изменяться.

Описание и инициализация переменных

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

int k; // это переменная целого типа int

double x; // это переменная вещественного типа удвоенной точности

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

После описания переменной её можно использовать, но возникает вопрос: а какое значение имеет переменная сразу же после её описания? Ответ таков: в программе на языке C# значение переменной после описания не определено. Такая переменная может использоваться в левой части оператора присваивания, но её нельзя использовать в выражении или в правой части оператора присваивания. Например:

y=z+1; // а так нельзя! Переменная z не определена

Для последнего оператора компилятор языка C# выдаст сообщение об ошибке. Этим свойством ( нельзя использовать переменную, которая не получила ни какого значения ) язык C# выгодно отличается от своих предшественников — языков С и С++.

Чтобы избежать проблемы, рекомендуется инициализировать переменные , то есть не просто выделять память под переменные, но и задавать им при этом необходимые значения. Например:

double x=3, y=4, z=5;

Инициализация переменных выполняется один раз на этапе компиляции и ни как не сказывается на скорости работы программы.

Задание и использование констант

Выше было дано определение констант. Теперь рассмотрим работу с константами более подробно.

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

25 — константа целого типа;

3.14 — вещественная константа;

‘A’ — символьная константа.

Все три приведённые здесь константы не имеют имени, они заданы своим внешним представлением и используются в программе непосредственно, например так:

int k=25; // переменная k инициализирована константой — целым числом 25.

В ряде случаев константе удобнее дать имя и использовать её далее по имени. Это делает текст программы более наглядным. Обычно применяется для математических или физических констант.

В языке C# определить именованную константу очень просто Для этого используют ключевое слово const , например:

const double PI=3.14; // здесь PI — константа

Значение переменной невозможно использовать как константу с

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

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, то было бы оптимально определить данное значение как константу, так как оно все равно в принципе неизменно:

Значение переменной невозможно использовать как константу с

Параметры могут быть константными — значения таких параметров не могут меняться. Константые параметры предваряются ключевым словом const . Например:

#include void square(int); int main() < int number ; square(number); // n * n = 16 > void square(const int n) < //n = n * n; так нельзя сделать std::cout void square(const int n) < .

При объявлении функции - в ее прототипе для параметров, которые передаются по значению, указывать const необязательно

// можно так void square(int); // можно и так void square(const int);

Для параметров, которые передаются по ссылке, указывать const в прототипе обязательно.

Зачем нужны такие константные параметры? Иногда нужно гарантировать, что параметр от начала и до конца функции будет иметь одно и то же начальное значение. Если параметр неконстантный, то есть вероятность, что значение параметра будет случайным образом изменено внутри функции. И даже есть такая рекомендация, что если не планируется явным образом менять значение параметра, то лучше сразу определитть его как константный.

Константному параметру можно передать в качестве аргумента как константу, так и переменную.

От этой ситуации следует отличать передачу констант в качестве аргументов для неконстантных параметров:

Не разрешено назначать значение константе

Константа представляет значение, доступное только для чтения. Эта ошибка имеет следующие причины и способы решения:

  • Предпринята попытка присвоить новое значение переменной, объявленной с типом Const, или константе библиотеки типов. Если необходимо присвоить новое значение, объявите обычную переменную с требуемым типом и присвойте желаемое значение этой переменной. Если необходима переменная с ограниченным набором значений, можно объявить перечисление, пользуясь оператором Enum.

Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Обратная связь

Были ли сведения на этой странице полезными?

Обратная связь

Отправить и просмотреть отзыв по

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *