Константы в 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
лучше не использовать.
Ну а вывод программы при использование вышеупомянутых примеров будет примерно таким:
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Все способы изучить С++
Начинающие программисты даже не догадываются о том, какой огромный пласт в этой области скрыт от их глаз, и чего многие из новичков не увидят никогда, потому что это тёмная сторона программирования - чистый исходный код системного уровня… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |