The part on integral promotion is not completely true. According to the Integral promotions section of the standard (4.5.1):
"A prvalue of an integer type other than bool, char16_t, char32_t, or wchar_t whose integer conversion rank (4.13) is less than the rank of int can be converted to a prvalue of type int if int can represent all the values of the source type; otherwise, the source prvalue can be converted to a prvalue of type unsigned int."
Means that an unsigned char will first be converted to an (signed) int (as it can contain all values of an unsigned char), not as mentioned on the page, only to unsigned short.
22.214.171.124 04:06, 27 September 2013 (PDT) Troels Frimor