C++ Константы

Константы — это фиксированные значения, которые не изменяются во время выполнения программы. Эти фиксированные значения также называютсялитералами。

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

Константы похожи на обычные переменные, за исключением того, что значение константы нельзя изменить после определения.

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

Целочисленные константы могут быть десятичными, восьмеричными или шестнадцатеричными константами. Префикс задаёт основание системы счисления: 0x или 0X указывает на шестнадцатеричную, 0 — на восьмеричную, а отсутствие префикса по умолчанию означает десятичную.

Целочисленные константы также могут иметь суффикс, который представляет собой комбинацию U и L. U означает беззнаковое целое, а L — длинное целое. Суффикс может быть в верхнем или нижнем регистре, а порядок U и L произвольный.

Ниже приведены некоторые примеры целочисленных констант:

212 // допустимо 215u // допустимо 0xFeeL // допустимо 078 // недопустимо: 8 не является восьмеричной цифрой 032UU // недопустимо: нельзя повторять суффикс

Ниже приведены примеры целочисленных констант различных типов:

85 // десятичное 0213 // восьмеричное 0x4b // шестнадцатеричное 30 // целое 30u // беззнаковое целое 30l // длинное целое 30ul // беззнаковое длинное целое

Константы с плавающей точкой

Константы с плавающей точкой состоят из целой части, десятичной точки, дробной части и экспоненциальной части. Для представления констант с плавающей точкой можно использовать десятичную или экспоненциальную форму.

При использовании десятичной формы нужно указать целую часть, дробную часть или обе. При использовании экспоненциальной формы нужно указать десятичную точку, экспоненту или обе. Экспонента со знаком вводится с помощью e или E.

Ниже приведены некоторые примеры констант с плавающей точкой:

3.14159 // корректно 314159E-5L // корректно 510E // некорректно: неполная экспонента 210f // некорректно: нет десятичной точки или экспоненты .e55 // некорректно: отсутствует целая или дробная часть

Логические константы

Существует две логические константы, обе из которых являются стандартными ключевыми словами C++:

  • trueЗначение представляет истину.
  • falseЗначение представляет ложь.

Не следует рассматривать значение true как 1 или значение false как 0.

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

Символьные константы заключаются в одинарные кавычки. Если константа начинается с L (только в верхнем регистре), это указывает, что она является широкой символьной константой (например, L'x'), и она должна храниться в переменной типаwchar_t. В противном случае это узкая символьная константа (например, 'x'), и она может храниться вcharв простой переменной этого типа.

Символьная константа может быть обычным символом (например, 'x'), escape-последовательностью (например, '\t') или универсальным символом (например, '\u02C0').

В C++ некоторые конкретные символы имеют особое значение, если перед ними стоит обратная косая черта, и используются для представления таких вещей, как новая строка (\n) или табуляция (\t). В следующей таблице перечислены некоторые из этих escape-последовательностей:

Escape-последовательностиЗначение
\\Символ \
\'Символ '
\"Символ "
\?символ ?
\aЗвуковой сигнал
\bВозврат на один символ
\fПодача страницы
\nПеревод строки
\rВозврат каретки
\tГоризонтальная табуляция
\vВертикальная табуляция
\oooВосьмеричные числа от одной до трёх цифр
\xhh . . .Шестнадцатеричные числа с одной или несколькими цифрами

В следующем примере показаны некоторые символы escape-последовательностей:

Пример

#include <iostream> using namespace std; int main() { cout << "Hello\tWorld\n\n"; return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

Hello   World

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

Строковые литералы или константы заключаются в двойные кавычки""Строка содержит символы, подобные символьным константам: обычные символы, escape-последовательности и универсальные символы.

Вы можете использовать\в качестве разделителей, чтобы разбить очень длинную строковую константу на несколько строк.

В следующем примере показаны некоторые строковые константы:

Пример

#include <iostream>
#include <string>
using namespace std;

int main() {
    string greeting = "hello, example";
    cout << greeting;
    cout << "\n";     // новая строка
    string greeting2 = "hello, \
                       example"
;
    cout << greeting2;
    return 0;
}
hello, example
hello, example

Определение констант

В C++ есть два простых способа определения констант:

  • Использование#defineПрепроцессор.
  • ИспользованиеconstКлючевое слово.

#define препроцессор

Ниже приведена форма определения константы с помощью препроцессора #define:

#define identifier value

Подробнее см. в примерах ниже:

Пример

#include <iostream> using namespace std; #define LENGTH 10 #define WIDTH 5 #define NEWLINE '\n' int main() { int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

50

ключевое слово const

Вы можете использоватьconstПрефиксное объявление задаёт константу определённого типа, как показано ниже:

const type variable = value;

Подробнее см. в примерах ниже:

Пример

#include <iostream> using namespace std; int main() { const int LENGTH = 10; const int WIDTH = 5; const char NEWLINE = '\n'; int area; area = LENGTH * WIDTH; cout << area; cout << NEWLINE; return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

50

Обратите внимание, что определение констант заглавными буквами — хорошая практика программирования.


Другие расширения