Перейти к содержанию
Educora
Начальный16 мин2 / 10

Переменные, типы и операторы

Объявляй переменные, работай с `int`, `double`, `char`, `bool`, `std::string` и `auto`, изучи арифметические операторы и ввод через `std::cin`.

Проверь себя
В этом уроке ты узнаешь
  • Объявлять переменные разных типов и присваивать им значения
  • Использовать ключевые слова auto и const
  • Применять арифметические операторы и объяснять целочисленное деление и %
  • Считывать данные через std::cin и управлять выводом дробных чисел

В игре нужно помнить здоровье персонажа, его очки и имя: очки растут, здоровье уменьшается, а имя не меняется. Программа хранит такие данные в переменных. В C++ у каждой переменной есть свой тип, и он определяется при компиляции, ещё до запуска программы.

Переменные и типы

Определение
Переменная

Именованная область памяти, в которой хранится значение определённого типа. В C++ переменную объявляют так: тип имя = значение;, например int age = 14;.

ТипЧто хранитПример
intцелые числа42, -7
doubleдробные (вещественные) числа3.14, -0.5
charодин символ, в одинарных кавычках'A', '7'
boolлогическое значениеtrue, false
std::stringтекст, в двойных кавычках"Baku"
long longочень большие целые числа9000000000
Основные типы C++
C++
#include <iostream>
#include <string>

int main() {
    int age = 14;
    double height = 1.62;
    char grade = 'A';
    bool isStudent = true;
    std::string city = "Baku";

    std::cout << "Age: " << age << '\n';
    std::cout << "Height: " << height << " m\n";
    std::cout << "Grade: " << grade << '\n';
    std::cout << "Student: " << isStudent << '\n';
    std::cout << "City: " << city << '\n';
    return 0;
}
Ожидаемый результат
Age: 14
Height: 1.62 m
Grade: A
Student: 1
City: Baku

Обрати внимание: значение char пишется в одинарных кавычках ('A'), а std::string — в двойных. Для std::string нужен #include <string>. Значение типа bool выводится как 1 (true) или 0 (false).

Компьютер хранит все значения в двоичной системе — в виде битов. int обычно занимает 4 байта (32 бита) и вмещает числа примерно от −2,1 млрд до 2,1 млрд. Для больших чисел есть тип long long. Переключай биты ниже и посмотри, какие числа можно записать восемью битами.

Интерактив
Загрузка симуляции…
8 бит дают 256 разных значений — от 0 до 255.

auto и const

Если тип очевиден из начального значения, его можно не писать: ключевое слово auto поручает компилятору самому вывести тип. auto не делает переменную «бестиповой» — тип по-прежнему выбирается один раз, при компиляции. const превращает переменную в константу: после получения первого значения её нельзя изменить.

C++
#include <iostream>

int main() {
    auto lives = 3;       // int
    auto speed = 2.5;     // double
    auto letter = 'Z';    // char
    const int maxLives = 5;

    lives = lives + 1;
    std::cout << "Lives: " << lives << " of " << maxLives << '\n';
    std::cout << "Speed: " << speed << ", letter: " << letter << '\n';
    // maxLives = 6;      // error: maxLives is const
    return 0;
}
Ожидаемый результат
Lives: 4 of 5
Speed: 2.5, letter: Z

Арифметические операторы

C++ выполняет обычные арифметические действия: +, -, *, /. Есть одна тонкость: при делении двух целых чисел результат тоже целый — дробная часть просто отбрасывается. Остаток от деления даёт оператор %. Если нужен дробный результат, одно из чисел должно быть double — например, можно написать 17.0 или преобразовать тип через static_cast<double>.

C++
#include <iostream>

int main() {
    int a = 17;
    int b = 5;
    std::cout << "a / b = " << a / b << '\n';
    std::cout << "a % b = " << a % b << '\n';
    std::cout << "17.0 / 5 = " << 17.0 / 5 << '\n';
    std::cout << "cast: " << static_cast<double>(a) / b << '\n';
    return 0;
}
Ожидаемый результат
a / b = 3
a % b = 2
17.0 / 5 = 3.4
cast: 3.4

Для изменения переменной есть краткие записи: score += 5 означает score = score + 5, так же работают -=, *= и /=. score++ увеличивает значение на 1, а score-- уменьшает на 1.

C++
#include <iostream>

int main() {
    int score = 10;
    score += 5;    // 15
    score *= 2;    // 30
    score -= 4;    // 26
    score++;       // 27
    std::cout << "Score: " << score << '\n';

    int coins = 7;
    coins /= 2;    // 3
    std::cout << "Coins: " << coins << '\n';
    return 0;
}
Ожидаемый результат
Score: 27
Coins: 3

Вывод и ввод

По умолчанию std::cout выводит дробные числа не более чем с 6 значащими цифрами. Чтобы самому задать число знаков после запятой, подключи <iomanip> и используй std::fixed вместе с std::setprecision:

C++
#include <iomanip>
#include <iostream>

int main() {
    double total = 14.0;
    double average = total / 3;
    std::cout << average << '\n';
    std::cout << std::fixed << std::setprecision(2) << average << '\n';
    return 0;
}
Ожидаемый результат
4.66667
4.67

Для чтения данных с клавиатуры используют std::cin и оператор >>: std::cin >> year; записывает введённое пользователем число в переменную year. В примерах этого курса мы задаём значения прямо в коде, чтобы результат всегда был одинаковым. Фрагмент ниже можно попробовать на своём компьютере:

C++
std::string name;
int year = 0;
std::cout << "Your name: ";
std::cin >> name;
std::cout << "Birth year: ";
std::cin >> year;
std::cout << "Hi, " << name << "! In 2030 you will be " << 2030 - year << ".\n";
Если ввести Murad и 2012, программа выведет: Hi, Murad! In 2030 you will be 18.

Главное

  • Переменная объявляется как тип имя = значение;, и её тип потом не меняется.
  • Основные типы: int, double, char, bool и std::string.
  • auto выводит тип из начального значения, а const запрещает менять значение.
  • Деление двух int даёт целое число; остаток находит %.
  • std::cin >> читает с клавиатуры, а std::fixed и std::setprecision управляют выводом дробных чисел.

Проверь себя

Вопросов: 10. Каждый правильный ответ приносит XP.

1 / 10
Чему равно x после int x = 17 / 5;?