Допустим создаём 3 переменных
int rez, arg2, arg1;
arg1 = 5;
arg2 = 2;
// double rez; - ошибка
rez = (double ) arg1 / arg2;
Можно ли сделать как нибудь преобразование переменной rez из инт в дабл? Чтобы при делении двух аргументов в rez присволось число 2,5 а не просто 2. Или тут только вариант создать ещё одну переменную, новую уже типа дабл?
1)
int arg2, arg1;
double rez;
arg1 = 5;
arg2 = 2;
rez = (double)arg1 / arg2;
Console.WriteLine(rez);
2)
dynamic rez, arg2, arg1;
arg1 = 5;
arg2 = 2;
rez = (double)arg1 / arg2;
Console.WriteLine(rez);
А такой вариант приемлем?
dynamic arg2, arg1;
arg1 = 5;
arg2 = 2;
Console.WriteLine((double)arg1 / (double)arg2);
Конечно приемлем, но не отвечает ТЗ.
Арифметическая операция из 2 интов всегда будет инт, если хотя бы один из операндов будет float или double, соответсвенно результат операции будем с больщим разрядом(большей точности или диапазона).
short int -> int
int double -> double
float double -> double
Но есть исключения
byte short -> int
short short -> int