Что означает такая форма записи в C#?
Вот код
short x = 150;
byte y = (byte)(x + x);
Вопрос конкретно о значении byte y и (byte)(x+x). Что вообще byte значит? Что в математическом смысле значит (byte)(x+x)? Заранее благодарю
Ответы (2 шт):
byte - это тип, представляющий 8 битное число без знака. Диапазон значений от 0 до 255
Запись (byte)x - называется явным приведением типов. Значение переменной будет приведено к типу byte.
Типы short и byte — целочисленные типы из C#. Короткое целое со знаком short может хранить целые от -32768 до 32767. В нём 16 битов, один из которых хранит знак. Байт состоит из 8 битов и не содержат знака, поэтому в нём могут храниться значения от 0 до 255.
Пример демонстрирует особенности явного приведения типа и возможную потерю данных.
Поскольку x равно 150, x + x равно 300. Это значение не может поместиться в байт, поэтому старшие 8 бит отбрасываются. Результатом будет число 300 по модулю 256, то есть 300 % 256, то есть 44.
Поскольку здесь возникает потеря данных (отбрасывание лишних бит), компилятор C# не выполняет приведение типа автоматически, мы явно должны привести тип с помощью конструкции (byte).
Если потеря данных не возникает, обычно есть неявное преобразование, например из byte в short приводить значения не обязательно.