Unetway

C++ - Константы и литералы

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

Целочисленные литеры

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

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

Вот несколько примеров целочисленных литералов:

212         // Legal
215u        // Legal
0xFeeL      // Legal
078         // Illegal: 8 is not an octal digit
032UU       // Illegal: cannot repeat a suffix

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

85         // decimal
0213       // octal
0x4b       // hexadecimal
30         // int
30u        // unsigned int
30l        // long
30ul       // unsigned long

Литералы с плавающей запятой

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

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

Вот несколько примеров литералов с плавающей запятой:

3.14159       // Legal
314159E-5L    // Legal
510E          // Illegal: incomplete exponent
210f          // Illegal: no decimal or exponent
.e55          // Illegal: missing integer or fraction

Булевы литералы

Есть два булевых литерала, и они являются частью стандартных ключевых слов на C ++ -

  • Значение true, представляющее true.
  • Значение false, представляющее false.

Вы не должны считать значение true равным 1, а значение false равно 0.

Литералы символов

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

Литеральный символ может быть простым символом (например, x), escape-последовательность (например, \ t) или универсальный символ (например, \ u02C0).

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

Escape sequence Meaning
\\ \ character
\' ' character
\" " character
\? ? character
\a Alert or bell
\b Backspace
\f Form feed
\n Newline
\r Carriage return
\t Horizontal tab
\v Vertical tab
\ooo Octal number of one to three digits
\xhh . . . Hexadecimal number of one or more digits

Ниже приведен пример, чтобы показать несколько символов escape-последовательности:

#include <iostream>
using namespace std;

int main() {
   cout << "Hello\tWorld\n\n";
   return 0;
}

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

Hello   World

Строковые литералы

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

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

Вот несколько примеров строковых литералов. Все три формы идентичны.

"hello, dear"

"hello, \

dear"

"hello, " "d" "ear"

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

В 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

Обратите внимание, что это хорошая практика программирования для определения констант в CAPITALS.