- Объявлять переменные разных типов и присваивать им значения
- Использовать ключевые слова
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 |
#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. Переключай биты ниже и посмотри, какие числа можно записать восемью битами.
auto и const
Если тип очевиден из начального значения, его можно не писать: ключевое слово auto поручает компилятору самому вывести тип. auto не делает переменную «бестиповой» — тип по-прежнему выбирается один раз, при компиляции. const превращает переменную в константу: после получения первого значения её нельзя изменить.
#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>.
#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.
#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:
#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. В примерах этого курса мы задаём значения прямо в коде, чтобы результат всегда был одинаковым. Фрагмент ниже можно попробовать на своём компьютере:
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";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.
x после int x = 17 / 5;?