Раздел: Статьи / Язык С++ /

Константы в CPP

Все способы изучить С++ Все способы изучить С++

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

Константа - это произвольная постоянная величина. Слово произошло от латинского constantis, что означает “постоянный, неизменный”. Из этого следует, что значение константы в программе задаётся один раз и больше не изменяется.

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

Константы в С++, как и переменные, имеют тип данных.

Значениями констант могут быть любые допустимые для С++ значения. Например, 0, 1, 0.5, 'A' или "Hello, World!".

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

100L

Будет означать, что это не просто число 100, а число 100 типа long.

Пример объявления констант в С++:

const int STO = 100;
const float PI = 3.14;
const string HELLO = "Hello, WORLD!";

Теперь вы можете использовать их в программе, например, так:

cout << HELLO << endl;
cout << PI << endl;
cout << "Pi * 100 = " << PI * 100 << endl;

Есть ещё один способ объявления констант, который работает не только в С++, но и в чистом Си:

#define MY_COUNT 13;
#define MY_STR "MY_COUNT";

Здесь мы с помощью директивы #define объявили две константы - числовую и строковую.

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

cout << MY_COUNT << endl;

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

string s = MY_STR + " = ";

не вызовет ошибки, однако в переменной s будет "MY_COUNT", а не "MY_COUNT = ", как ожидалось.

Я не знаю, с чем это связано. Может быть с глюками конкретного компилятора, а может быть с тем, что потоковый ввод-вывод появился только в С++, а в Си его не было. Хотя и printf такие константы тоже глючат. Впрочем, раньше такого не было. Возможно, что это уже Windows 10 вносит свои коррективы.

Решить проблемы можно, например, так:

int x = MY_COUNT;
string s = MY_STR;
s = s + " = ";
cout << s << x << endl;

Здесь всё отработает так, как и ожидалось. Но, получается, что сегодня в С++ без надобности для определения констант директиву #define лучше не использовать.

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

Константы в CPP


Быстрый старт в С++ Быстрый старт в С++

Бесплатная небольшая книга, которую не надо читать полгода, но которая покажет вам, что такое С++ и как начать его изучение. А также поможет решить, надо ли вам это вообще. Кроме того, подписавшись на рассылку, вы будете получать от меня полезные материалы по С++, которые я периодически выпускаю... Подробнее...
Помощь в технических вопросах Помощь в технических вопросах

Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее...

Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика