Menu
Coddy logo textTech

Приведение типов. Часть 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++, так как он делает преобразование явно видимым и проверяется компилятором.

challenge icon

Задание

Новичок

Напишите программу на 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;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы