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