Разные типы в одной операции в C++
В одном действии могут стоять числа разных типов.
Если рядом с int стоит double, целое
на время действия становится double.
Результат тоже получает тип double.
Это называют расширением.
Сначала разделим два числа типа int.
Оба целые, дробная часть отбрасывается.
Смотрите пример:
int num1 = 5;
int num2 = 2;
std::cout << num1 / num2 << "\n"; // выведет 2
Теперь делитель сделаем дробным. Целое расширяется до дробного, и хвост сохраняется:
int num1 = 5;
double num2 = 2.0;
std::cout << num1 / num2 << "\n"; // выведет 2.5
Переменная num1 после деления остается int.
Расширение живет только внутри действия.
Сложим целое 12 и дробь 12.5.
Целое снова расширяется до double,
сумма получается дробной:
int num1 = 12;
double num2 = 12.5;
std::cout << num1 + num2 << "\n"; // выведет 24.5
Умножим целое 3 на дробь 2.5.
Правило то же: результат дробный:
int num1 = 3;
double num2 = 2.5;
std::cout << num1 * num2 << "\n"; // выведет 7.5
Если оба числа одного типа, расширять нечего.
Сумма двух int остается целой.
Дан следующий код:
int num1 = 5;
double num2 = 2.0;
std::cout << num1 / num2 << "\n";
Скажите, что выйдет на экран.
Дан следующий код:
int num1 = 7;
int num2 = 2;
std::cout << num1 / num2 << "\n";
Скажите, что выйдет на экран.
Дан следующий код:
int num1 = 4;
double num2 = 1.5;
std::cout << num1 * num2 << "\n";
Скажите, что выйдет на экран.