Константы и literal в C++

Здравствуйте, будущие программисты! Сегодня мы отправляемся в увлекательное путешествие в мир констант и literal в C++. Не волнуйтесь, если эти термины кажутся вам немного пугающими - к концу этого урока вы будете использовать их, как профи! Погружаемся!

C++ Constants/Literals

Что такое константы и literal?

Прежде чем углубиться в детали, давайте поймем, что такое константы и literal. Представьте их как "незменяемые" элементы вашего кода - например, количество дней в неделе или значение pi. Это надежные друзья, которые всегда остаются такими же, независимо от того, что происходит в вашей программе.

Integer Literals

Давайте начнем с чего-то знакомого - чисел! В C++, когда мы записываем целое число напрямую в нашем коде, мы называем его integer literal. Это как написать число на листе бумаги - просто и понятно.

int myAge = 25;
int numberOfPlanets = 8;
int negativeNumber = -10;

В этих примерах 25, 8 и -10 являются integer literal. Они просто сидят там, будучи числами, без каких-либо десятичных знаков или изысков.

Но подождите, есть больше! C++ позволяет нам записывать integer literal в различных��統ах счисления:

int decimalNumber = 42;     // Десятичный (основание 10)
int octalNumber = 052;      // Восьмеричный (основание 8) - начинается с 0
int hexNumber = 0x2A;       // Шестнадцатеричный (основание 16) - начинается с 0x
int binaryNumber = 0b101010;// Двоичный (основание 2) - начинается с 0b (C++14 и далее)

Не волнуйтесь, если восьмеричный, шестнадцатеричный или двоичный seem confusing. Просто знайте, что они - разные способы представления одного и того же числа. Это как speak different languages - " сорок два ", "cuarenta y dos" и "quarante-deux" все значат одно и то же!

Floating-point Literals

Теперь добавим в смесь десятичные знаки! Floating-point literal - это числа с десятичными знаками или в научной записи.

float pi = 3.14159f;
double avogadroNumber = 6.022e23;
long double veryPreciseNumber = 1.23456789L;

Здесь 3.14159f - это float literal (обратите внимание на 'f' в конце), 6.022e23 - это double literal в научной записи (e23 означает ×10^23), а 1.23456789L - это long double literal (обратите внимание на 'L' в конце).

Boolean Literals

Boolean literal - это simplest из всех - их всего два!

bool isAwesome = true;
bool isBoring = false;

Вот и все! Просто true и false. Это как "да" и "нет" в программировании.

Character Literals

Character literal представляют собой single characters и enclosed в single quotes.

char firstInitial = 'J';
char newline = '\n';
char tab = '\t';

Last two examples show special characters: '\n' для new line и '\t' для tab. Эти称作 escape sequences.

String Literals

String literal - это sequences of characters, enclosed в double quotes.

std::string greeting = "Hello, World!";
std::string quote = "To be, or not to be, that is the question.";

Remember, strings используют double quotes, в то время как single characters используют single quotes!

Defining Constants

Теперь, когда мы знаем о literal, давайте посмотрим, как мы можем использовать их для создания констант - значений, которые не изменяются на протяжении всей нашей программы.

The #define Preprocessor

One way to define constants - это используя #define preprocessor directive:

#define PI 3.14159
#define MAX_STUDENTS 30

// Usage
double circleArea = PI * radius * radius;
if (numberOfStudents > MAX_STUDENTS) {
std::cout << "Class is full!";
}

The #define directive tells the compiler чтобы заменить every occurrence of PI с 3.14159 и MAX_STUDENTS с 30 before compiling the code.

The const Keyword

A более modern и preferred способ define constants - это используя const keyword:

const double PI = 3.14159;
const int MAX_STUDENTS = 30;

// Usage is the same as with #define

The const keyword tells the compiler что эти переменные cannot быть изменены после инициализации.

Putting It All Together

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

#include <iostream>
#include <string>

#define GAME_NAME "C++ Adventure"

int main() {
const int MAX_LEVEL = 100;
const double XP_MULTIPLIER = 1.5;

int currentLevel = 1;
double currentXP = 0.0;
bool hasCompletedTutorial = false;
char playerRank = 'D';
std::string playerName = "Newbie";

std::cout << "Welcome to " << GAME_NAME << "!" << std::endl;
std::cout << "Player: " << playerName << std::endl;
std::cout << "Level: " << currentLevel << "/" << MAX_LEVEL << std::endl;
std::cout << "XP: " << currentXP << std::endl;
std::cout << "Rank: " << playerRank << std::endl;
std::cout << "Tutorial completed: " << (hasCompletedTutorial ? "Yes" : "No") << std::endl;

return 0;
}

Эта программа использует все типы констант и literal, о которых мы говорили. Она определяет имя игры с помощью #define, устанавливает максимальный уровень и множитель XP с помощью const и использует различные literal для инициализации statisticians игрока.

Conclusion

Поздравления! Вы только что сделали свои первые шаги в мир констант и literal в C++. Помните, это building blocks ваших программ - неизменные значения, которые вы будете использовать для создания удивительных вещей. По мере продолжения вашего путешествия в программировании вы найдете, что используете эти concepts каждый день. Keep practicing, stay curious, и счастливого кодирования!

Literal Type Example Description
Integer 42, -10, 0, 1000 Whole numbers
Octal 052, 077 Base-8 numbers (start with 0)
Hexadecimal 0x2A, 0xFF Base-16 numbers (start with 0x)
Binary 0b101010 Base-2 numbers (start with 0b, C++14 onwards)
Floating-point 3.14, 2.5f, 1e10 Numbers with decimal points or in scientific notation
Boolean true, false Logical values
Character 'A', '\n', '\t' Single characters or escape sequences
String "Hello", "C++" Sequences of characters

Credits: Image by storyset