[паскаль.NET] сдвиг влево байта - переполнение

Anna74

сдвигаем влево
 
 x shl 5 

x типа байт, по-идее должен просто выкинуть в нём старшие 5 бит, младшие 3 сдвинуть в старшие и последние 5 заменить нулями, нет разве?
Как это в других языках? А то в PascalABC.NET при работе с Color.R, Color.G и Color.B (из System.Drawing) MSDN говорит, что это байт, а паскаль выдает ран-тайм ошибку, что типа не можешь присвоить значение больше 255.
Такое чувство, что он работает во время сдвига не с 8 битами, а например с 32.
Функция, в аргументах которой пишу x shl 5 тоже ждёт на вход аргументы типа байт, вроде бы не должен заниматься заранее неявным приведением типов например к int32, так что непонятно откуда проблема.

Dasar

в PascalABC.NET
в .net-е при вычислениях промежуточным типом считается int
поэтому результат сдвига надо явно кастить к byte-у

Anna74

понятно, спасибо, буду знать
Тогда 2 вопрос - книжки для начинающих по .NET не посоветуете, по Framework...
Если в книге привязка к конкретному языку c++ и т.д. - разберусь, на многих программировал, но не для .NET

val63

Общий обзор фреймворка - это C# in a Nutshell или более монструозное C# Unleashed.
Оставить комментарий
Имя или ник:
Комментарий: