В С++ под константами подразумевают такие значения, которые не могут быть изменены в ходе выполнения программы. Под константами здесь и далее будем подразумевать именованные ячейки памяти, значения которых фиксируются на начальном этапе выполнения программы и затем в процессе выполнения программы не могут быть изменены. В этом смысле константы - это те же переменные, но только с фиксированным, определенным единожды, значением.
Для превращения переменной в постоянное запоминающее устройство, то есть в константу, используют идентификатор const. Идентификатор указывается перед типом переменной и гарантирует неизменность значения переменной. Само значение переменной присваивается либо при объявлении, либо позже в программе, но только один раз и до первого использования переменной в программе.
Например, инструкцией const int m=5 инициализируется целочисленная переменная m со значением 5. После этого переменную m можно использовать в выражениях, однако изменить значение переменной не удастся.
Литералами называются фиксированные значения, которые может прочитать человек, и которые не могут быть изменены программой. Например, значение 101 представляет собой целочисленный литерал. В С++ литералы могут быть любого из базовых типов данных. Способ представления литерала зависит от его типа. Как упоминалось ранее, символьные литералы заключаются в одиночные кавычки. Например, ‘a’ и ‘%’ суть символьные литералы.
Целочисленные литералы задаются в виде чисел без дробной части. Например, 10 и — 100 суть целочисленные константы. Литералы с плавающей точкой требуют указания десятичной точки, за которой может следовать дробная часть числа. Например, 11.123 есть константа с плавающей точкой. С++ допускает также использование для чисел с плавающей точкой обозначений, принятых в научном мире (с указанием порядка в виде степени десяти).
Все литеральные значения имеют тот или иной тип данного, однако этот факт вызывает вопрос. Как вы знаете, существуют несколько типов целых чисел, например, int, short int или unsigned long int. Вопрос заключается в следующем: Как компилятор определяет тип литерала? Например, какой тип имеет число 123.23, float или double? По умолчанию компилятор С++ помещает целочисленный литерал в минимальный по размеру и совместимый с конкретным значением литерала тип данного, начиная с int. По умолчанию литералы с плавающей точкой получают тип double Так, значение 123.23 будет типа double.
Практически для всех программ, которые вы будете составлять, учась языку, умолчания компилятора вполне будут вас устраивать. В тех случаях, когда предположения по умолчанию о типах числовых литералов, которые принимает С++, вас не устраивают, вы можете задать конкретный тип числового литерала с помощью суффикса. Для типов с плавающей точкой чтобы задать для литерала тип float, следует вслед за числом указать спецификатор F. Если сопроводить число спецификатором L, число приобретет тип long double. Для целочисленных типов суффикс U указывает на тип unsigned, а L на long. (Для задания типа unsigned long следует использовать оба спецификатора, и U, и L.) Ниже приведено несколько примеров:
Тип данного
Примеры констант
int
1 123 21000 -234
long int
35000L -34L
unsigned int
10000U 987U 40000U
unsigned long
12323UL 900000UL
float
123.23F 4.34e-3F
double
23.23 123123.33 -0.9876324
long double
1001.2L
Строка представляет собой последовательность символов, заключенную в двойные кавычки. Пример строки: "Это проверка". Обратите внимание на важное обстоятельство: хотя С++ позволяет определять строковые константы, в нем нет встроенного типа строковых данных. Строки описываются в С++ как массивы символов. (С++, однако, имеет строковый тип в своей библиотеке классов.)