Что такое константа в с
Перейти к содержимому

Что такое константа в с

  • автор:

Что такое константа в с

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

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

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

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

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

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 k; // это переменная целого типа int

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

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

После описания переменной её можно использовать, но возникает вопрос: а какое значение имеет переменная сразу же после её описания? Ответ таков: в программе на языке C или C++ переменная после описания имеет произвольное значение , то есть ей просто выделяется свободный участок памяти и на этом всё заканчивается. В переменной хранится та последовательность двоичных цифр, которая была там до выделения памяти под эту переменную. Такой подход таит определённую опасность: можно по ошибке использовать в выражении переменную, которой не было присвоено ни какое значение:

Так как переменная x ни как не была определена, т. е. имела произвольное значение (чаще всего — это очень большое число или наоборот — очень маленькое), то и переменная y получит явно не то значение, на которое рассчитывал пользователь.

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

double a=3, b=4, c=5;

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

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

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

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

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

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

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

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

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

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

В языке C был единственный способ создания именованных констант — с помощью директивы препроцессора #define , например:

t = PI * 2; // здесь использована именованная константа PI, заданная выше

В языке C++ появился ещё один способ — использование константных переменных , то есть переменных, которые нельзя изменять после инициализации. Рассмотрим на том же примере:

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

В чём преимущество от использования константных переменных вместо задания констант с помощью директивы препроцессора #define ? Всё очень просто: при использовании константной переменной компилятор проверяет правильность задания константы, и если она будет задана неверно, то будет выдана ошибка именно в операторе, в котором дано определение константной переменной.

Если использована именованная константа, заданная директивой препроцессора #define , то ошибка будет показана только там, где используется константа. Например:

// в директиве препроцессора сделаем ошибку:

t = PI * 2; // в этой строке компилятор выдаст ошибку,

// хотя на самом деле ошибка допущена гораздо раньше!

Что такое константа в с

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

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

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

Константа — это ограниченная последовательность символов алфавита языка, представляющая собой изображение фиксированного (неизменяемого) объекта.

Константы бывают числовые, символьные и строковые. Числовые константы делятся на целочисленные и вещественные.

Целочисленные константы

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

Десятичные Последовательность цифр ( 0 — 9 ), которая начинаются с цифры, отличной от нуля.
Пример: 1, -29, 385. Исключение — число 0.
Восьмеричные Последовательность цифр ( 0 — 7 ), которая всегда начинается с 0 .
Пример: 00, 071, -052, -03.
Шестнадцатеричные Последовательность шестнадцатеричных цифр ( 0 — 9 и A — F ), которой предшествует присутствует 0x или 0X .
Пример: 0x0, 0x1, -0x2AF, 0x17.

Двоичная система представления данных непосредственно в языке Си не поддерживается. Однако можно воспользоваться файлом binary.h, в котором определены двоичные константы в пределах байта.

Пример использования двоичной системы счисления в языке Си:

#include
#include «binary.h»
int main()
unsigned char p = b10001001 | b00001010; // p=b10001011=139
printf( «p = %dd = %xh» , p, p);
getchar(); getchar();
return 0;
>

Двоичная система счисления в Си

Результат выполнения

В зависимости от значения целой константы компилятор присваивает ей тот или иной тип ( char , int , long int ).

С помощью суффикса U (или u ) можно представить целую константу в виде беззнакового целого.

Например, Константе 200U выделяется 1 байт, и старший бит используется для представления одного из разрядов кода числа и диапазон значений становится от 0 до 255 . Суффикс L (или l ) позволяет выделить целой константе 8 байт ( long int ).

Совместное использование в любом порядке суффиксов U (или u ) и L (или l ) позволяет приписать целой константе тип unsigned long int , и она займет в памяти 64 разряда, причем знаковый разряд будет использоваться для представления разряда кода (а не знака).

Вещественные константы

Константа с плавающей точкой (вещественная константа) всегда представляется числом с плавающей точкой двойной точности, т. е. как имеющая тип double , и состоит из следующих частей:

  • целой части — последовательности цифр;
  • точки — разделителя целой и дробной части;
  • дробной части — последовательности цифр;
  • символа экспоненты е или E ;
  • экспоненты в виде целой константы (может быть со знаком).

Любая часть (но не обе сразу) из нижеследующих пар может быть опущена:

  • целая или дробная часть;
  • точка или символ е ( Е ) и экспонента в виде целой константы.

Примеры вещественных констант

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

  • F (или f ) — float для простых вещественных констант,
  • L (или l ) — long double для вещественных констант двойной расширенной точности.
  • 3.14159F — константа типа float , занимающая 4 байта;
  • 3.14L — константа типа long double , занимающая 10 байт.

Символьные константы

Символьная константа — это один символ, например: ‘z’ . В качестве символьных констант также могут использоваться управляющие коды, не имеющие графического представления. При этом код управляющего символа начинается с символа ‘\’ (обратный слеш).

Код Обозначение Описание
0x00 ‘\0’ Нуль-символ, NULL
0x07 ‘\a’ Звуковой сигнал.
0x08 ‘\b’ Возврат на 1 шаг (Backspace)
0x09 ‘\t’ Горизонтальная табуляция (Tab)
0x0A ‘\n’ Перевод строки (Enter)
0x0B ‘\v’ Вертикальная табуляция (в консоли аналогична переводу строки)
0x0C ‘\f’ Смена страницы
0x0D ‘\r’ Возврат каретки

Как правило, нажатие клавиши Enter генерирует сразу два управляющих символа — перевод строки ( 0x0A ) и возврат каретки ( 0x0D ).

Все символьные константы имеют тип char и занимают в памяти 1 байт. Значением символьной константы является числовое значение её внутреннего кода.

Строковые константы

Строковая константа — это последовательность символов, заключенная в кавычки, например:

«Это строковая константа»

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

В конце каждой строковой константы компилятор помещает ‘\0’ (нуль-символ), чтобы программе было возможно определить конец строки. Такое представление означает, что размер строковой константы не ограничен каким-либо пределом, но для определения длины строковой константы её нужно полностью просмотреть.

Поскольку строковая константа состоит из символов, то она имеет тип char . Количество ячеек памяти, необходимое для хранения строковой константы на 1 больше количества символов в ней (1 байт используется для хранения нуль-символа).

Символьная константа ‘x’ и строка из одного символа «x» — не одно и то же. Символьная константа — это символ, используемый для числового представления буквы x, а строковая константа «x» содержит символ ‘x’ и нуль-символ ‘\0’ и занимает в памяти 2 байта. Если в программе строковые константы записаны одна за другой через разделители, то при выполнении программы они будут размещаться в последовательных ячейках памяти.

Переменные

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

Любая переменная до ее использования в программе на языке Си должна быть объявлена, то есть для нее должны быть указаны тип и имя (идентификатор).

Объявление переменных в Си осуществляется в форме

ТипПеременной ИмяПеременной;

Каждую переменную можно снабдить комментарием, поясняющим ее смысл. Например,

int i; // счетчик циклов

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

При объявлении переменной ей может быть присвоено начальное значение в форме
ТипПеременной ИмяПеременной=значение;

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

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