ОБНОВЛЕНИЕ : Этот вопрос был темой моего блога в понедельник 29 ноября 2010 года:
http://blogs.msdn.com/b/ericlippert/archive/2010/11/29/bit-twiddling-what-does-warning-cs0675-mean.aspx
Спасибо за отличный вопрос!
Вы избавляетесь от предупреждения, сначала подумав о предупреждении и решив, прав ли компилятор, чтобы в первую очередь обратить ваше внимание на проблему! Собственно ли вы собираетесь получать неправильные результаты от побитового типа или преобразование из типа со знаком в тип без знака увеличит целое число?
Если ответ да тогда ваше решение неверно.Не устраняйте предупреждение, заставляя компилятор по-прежнему делать неправильные вещи без предупреждения.Устраните предупреждение, сделав правильную вещь: не используйте преобразование, которое расширяет целое число.
Если ответ нет , а вы хотите расширение знака, то ваше решение или решение Ханса Пассанта является правильным.Тем не менее, я бы добавил комментарий к этому эффекту в коде, потому что в его нынешнем виде трудно понять, что расширение знака желательно.