Я полный новичок в C# Помогите понять почему не работает мой код
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введи год твоего рождения:");
string bornFalse = Console.ReadLine();
short born = Convert.ToInt16(bornFalse);
short NowDate = 2020;
short ready = NowDate - born;
Console.WriteLine("Твой возраст:" + ready);
}
}
}
Ответы (1 шт):
Автор решения: Las
→ Ссылка
Тип int (он же System.Int32) - наименьший знаковый тип, для которого определены арифметические операции. Таким образом, вычитая short из short они неявно преобразуются к int, вычитаются и возвращается результат тоже типа int. Обратное преобразование (из int в short) может вызывать потерю значащих разрядов, поэтому возможно только явное преобразование:
short ready = (short) (NowDate - born);
Но лучше просто используйте везде int (для увеличения скорости доступа к памяти используется выравнивание, поэтому "сэкономленные" байты все равно окажутся недоступны)