A short is required to be at least 16 bits. It may be as big as a long. It must not be bigger than a long nor than an int, and must not be smaller than a char. (A char is not necessarily 8 bits.) There are undobtedly toy "C" implementations that don't follow the rules.