Приведение типов. Часть 1
Часть раздела Основы путешествия по C++ на Coddy — урок 14 из 74.
Приведение типов — это процесс преобразования значения из одного типа данных в другой.
В C++ мы можем преобразовывать целые числа в числа с двойной точностью (doubles), числа с двойной точностью в целые числа и многое другое. Существует два типа приведения типов: неявное (автоматическое) и явное (ручное) приведение.
Например Integer to Double:
Неявное (автоматическое) приведение типов:
int number = 5;
double decimal = number; // автоматически становится 5.0
// с вычислением
int x = 7;
double result = x / 2.0; // результат 3.5Примечание: При делении двух значений типа int, C++ выполняет целочисленное деление — дробная часть отбрасывается. Например, 7 / 2 дает 3, а не 3.5. Чтобы получить результат с десятичной точкой, хотя бы один операнд должен быть типа double (например, 7 / 2.0 дает 3.5).
Явное (ручное) приведение типов Double to Integer:
double decimal = 9.7;
int number = (int) decimal; // становится 9 (десятичная часть отсекается)
// с вычислением
double price = 19.99;
int roundedPrice = (int) price; // становится 19Предпочтительный стиль современного C++: Вместо приведения типов в стиле C (int) decimal, лучше использовать static_cast<>(), что является более безопасным и явно выражает ваше намерение:
double decimal = 9.7;
int number = static_cast<int>(decimal); // становится 9 (дробная часть отсекается)
double price = 19.99;
int roundedPrice = static_cast<int>(price); // становится 19Примечание: Как (int) value, так и static_cast<int>(value) дают здесь одинаковый результат, но static_cast<>() является рекомендуемым подходом в современном C++, так как он делает преобразование явно видимым и проверяется компилятором.
Задание
НовичокНапишите программу на C++, которая демонстрирует приведение типов. Выполните следующее:
Приведите переменную price к типу int и сохраните результат в новую переменную с именем intPrice.
Шпаргалка
Приведение типов преобразует значения из одного типа данных в другой.
Неявное (автоматическое) приведение — происходит автоматически:
int number = 5;
double decimal = number; // автоматически становится 5.0
int x = 7;
double result = x / 2.0; // результат 3.5 (int/int отбрасывает дробную часть)Явное (ручное) приведение — в стиле C и современный static_cast:
double price = 19.99;
int a = (int) price; // в стиле C: становится 19
int b = static_cast<int>(price); // предпочтительно в современном C++: становится 19Примечание: Приведение double к int усекает (отбрасывает) дробную часть. static_cast<>() предпочтительнее в современном C++ для ясности и безопасности компиляции.
Попробуйте сами
#include <iostream>
int main() {
// Объявление и инициализация переменных
double price = 99.99;
int intPrice = ?; // Явное приведение из double в int
// Вывод значений
std::cout << "Price: " << price << std::endl;
std::cout << "Int Price: " << intPrice << std::endl;
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияИнкремент и декрементПостфиксный инкремент и декрементСокращенные арифметические операцииОператоры сравненияСравнение строк7Основы ввода-вывода
Оператор coutОператор cinВвод строкПовторение — До 120Повторение — Истина или ложь3Переменные. Часть 2
Объявление типовСоглашения об именованииПовторение: инициализация переменныхПриведение типов. Часть 1Приведение типов. Часть 26Принятие решений
Оператор ifКонструкция if - elseОператор switchУсловный операторПовторение: if - elseВложенный if - else