Тестирование нескольких компиляторов (Comeau, g++) подтверждает, что результатом побитового оператора некоторого "целочисленного типа" является int:
void foo( unsigned char );
void foo( unsigned short );
unsigned char a, b;
foo (a | b);
Я бы ожидал, что тип "a | b" будет unsigned char, так как оба операнда без знака char, но компиляторы говорят, что результатом является int, а вызов foo() является неоднозначным. Почему язык разработан так, что результатом является int или эта реализация зависит?
Спасибо,