Почему xor'ing двух значений ushort не возвращает ushort?

Возможный дубликат:
C # XOR для двухбайтовых переменных не будет компилироваться без приведения

Почему я получаю ошибку компиляции в этом коде C #?

void test()
{
   ushort a = 0;
   ushort b = 0;
   ushort c = a ^ b; //ERROR
}

ошибка CS0266: невозможно неявно преобразовать тип int в ushort. Существует явное преобразование (не хватает ли приведения?)


person mackenir    schedule 10.10.2012    source источник


Ответы (1)


Взгляните на это: C # XOR для двухбайтовых переменных не будет компилироваться без приведения

По сути, с битовыми операторами любой операнд, меньший, чем int, автоматически преобразуется в int.

person dbattaglia    schedule 10.10.2012
comment
@dbattaglia - Итак, вы понимаете причину отрицательного голоса. Это легко могло быть комментарием. - person Security Hound; 10.10.2012