Неявное расширение типа в C#
Неявное расширение записывает число в более широкий тип без записи в скобках. Компилятор выполняет его сам, когда значение точно помещается и дробная часть не теряется.
Целое int можно положить в long.
Число остается тем же, меняется только тип
переменной слева:
int num1 = 5;
long num2 = num1;
Console.WriteLine(num2); // prints 5
Тот же int ложится в double.
На экране снова целое без точки:
int num1 = 12;
double num2 = num1;
Console.WriteLine(num2); // prints 12
Маленький byte расширяется до int
при записи и внутри действия с int:
byte num1 = 200;
int num2 = num1;
Console.WriteLine(num2); // prints 200
Расширение в действии живет только внутри
выражения. Сложим byte и int.
Оба на время счета становятся int,
сумма тоже int:
byte num1 = 10;
int num2 = 20;
Console.WriteLine(num1 + num2); // prints 30
Обратная запись, из широкого типа в узкий,
неявно не проходит. Дробное в int
само не ляжет, программа не собирается:
double num1 = 3.0;
int num2 = num1; // does not compile
Дана переменная:
int num = 100;
Запишите ее в переменную типа long
и выведите новую переменную.
Дан следующий код:
byte num1 = 5;
int num2 = 7;
Console.WriteLine(num1 + num2);
Скажите, что выйдет на экран.