Что означает такая форма записи в C#?
Вот код
short x = 150;
byte y = (byte)(x + x);
Вопрос конкретно о значении byte y и (byte)(x+x). Что вообще byte значит? Что в математическом смысле значит (byte)(x+x)? Заранее благодарю
Вот код
short x = 150;
byte y = (byte)(x + x);
Вопрос конкретно о значении byte y и (byte)(x+x). Что вообще byte значит? Что в математическом смысле значит (byte)(x+x)? Заранее благодарю
Типы 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
приводить значения не обязательно.
byte
- это тип, представляющий 8 битное число без знака. Диапазон значений от 0 до 255
Запись (byte)x
- называется явным приведением типов. Значение переменной будет приведено к типу byte
.