Что означает такая форма записи в C#?

Рейтинг: 0Ответов: 2Опубликовано: 11.03.2023

Вот код

short x = 150;

byte y = (byte)(x + x);

Вопрос конкретно о значении byte y и (byte)(x+x). Что вообще byte значит? Что в математическом смысле значит (byte)(x+x)? Заранее благодарю

Ответы

▲ 3Принят

Типы 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 приводить значения не обязательно.

▲ 0

byte - это тип, представляющий 8 битное число без знака. Диапазон значений от 0 до 255

Запись (byte)x - называется явным приведением типов. Значение переменной будет приведено к типу byte.