@whitequark C does not define the exact width of a byte. A char (read: byte) must be at least 8 bits wide, but can be as wide as the implementation wants. So if you have 12-bit chars and want to specify their values using \x, two hexadecimal digits won’t be enough. And saying “all following digits are part of the number” is easier for both the specification and the programmer than saying “the number of digits is ceil(CHAR_BIT/4).” In theory, in a world where you actually have systems with CHAR_BIT ≠ 8.